ASP免费托管SmarterASP.NET部署后SQL连接报错求助
解决SmarterASP.NET部署后SQL Server连接错误(找不到Local Database Runtime)
本地Visual Studio运行ASP.NET项目一切正常,但部署到SmarterASP.NET免费托管平台后出现以下错误:
Server Error in '/' Application. The system cannot find the file specified 说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中起源的更多信息。 异常详细信息:System.ComponentModel.Win32Exception: The system cannot find the file specified 源错误: 执行当前Web请求期间生成了未处理的异常。可使用下面的异常堆栈跟踪识别异常的起源和位置。 堆栈跟踪: [Win32Exception (0x80004005): The system cannot find the file specified] [SqlException (0x80131904): 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(provider: SQL Network Interfaces, error: 52 - 无法找到Local Database Runtime安装。验证SQL Server Express是否已正确安装,且Local Database Runtime功能已启用。)] System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager) +947 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +342 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +38 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +726 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +91 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +438 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +79 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +201 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +156 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +22 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +92 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +219 System.Data.SqlClient.SqlConnection.Open() +101 WDassignment1.login.btnSignin_Click(Object sender, EventArgs e) in C:\Users\ASUS\Desktop\WDassignment1\WDassignment1\login.aspx.cs:30 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9796650 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +211 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1696 版本信息: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.8.4494.0
错误原因
本地开发时使用了SQL Server Express LocalDB,这是微软专为开发环境设计的轻量级数据库,仅能在本地运行,SmarterASP.NET的托管环境并未安装LocalDB,导致部署后无法找到数据库运行时,进而触发连接失败。
解决步骤
1. 获取SmarterASP.NET提供的远程SQL Server连接信息
登录SmarterASP.NET控制面板,进入SQL Server管理模块,获取以下信息:
- 远程服务器地址(格式通常为
xxx.smarterasp.net) - 分配的数据库名称
- 数据库用户名和密码
2. 修改项目连接字符串
打开项目的Web.config文件,找到connectionStrings节点,替换为远程数据库的连接信息:
<connectionStrings> <add name="YourConnectionName" connectionString="Data Source=远程服务器地址;Initial Catalog=数据库名称;User ID=用户名;Password=你的密码;" providerName="System.Data.SqlClient" /> </connectionStrings>
注意:移除原连接字符串中的AttachDbFilename、LocalDB等仅适用于本地的参数。
3. 迁移本地数据库到远程服务器
- 用SQL Server Management Studio(SSMS)连接本地LocalDB,右键数据库选择任务 > 生成脚本,导出包含表结构和数据的SQL脚本
- 在SmarterASP.NET的SQL管理界面(或用SSMS远程连接到提供的SQL服务器)执行导出的脚本,完成数据迁移
4. 重新部署项目
- 清理本地项目,确保
Web.config已更新为生产环境连接配置 - 重新发布项目到SmarterASP.NET,避免部署过程中覆盖正确的配置
内容的提问来源于stack exchange,提问作者Ashika Indunil
相关产品推荐
相关产品推荐

