将应用程序发布到远程服务器时连接到 SQL 时出现问题

本文关键字:连接 SQL 问题 应用程序 服务器 | 更新日期: 2023-09-27 18:33:59

应用程序

加载,但是当应用程序尝试连接到SQL时,加载需要一段时间,然后返回错误。 使用数据链接(.udl 文件(测试连接属性时,它成功。 该应用程序在我的本地计算机上也能正常运行。 我已经搜索了所有地方,设置很好,网络管理员验证了防火墙,一切都设置正确。 我错过了什么?

我注意到它在错误中提到了名称管道,但是,这不应该使其成为 TCP?

SQLConnectionString.NetworkLibrary = "dbmssocn";

这是我的连接字符串方法:

public string GetReachoutConnectionString()
    {
        SqlConnectionStringBuilder SQLConnectionString = new SqlConnectionStringBuilder();
        SQLConnectionString.TypeSystemVersion = "Latest";
        SQLConnectionString.NetworkLibrary = "dbmssocn";
        SQLConnectionString.DataSource = "10.10.xxx.xx,1433";
        SQLConnectionString.InitialCatalog = "cat";
        SQLConnectionString.UserID = "xxx";
        SQLConnectionString.Password = "xxx";
        SQLConnectionString.MultipleActiveResultSets = true;
        SQLConnectionString.ApplicationName = "Website";
        return SQLConnectionString.ConnectionString;
    }

这是我得到的错误:

[Win32异常 (0x80004005(: 找不到网络路径]

[SqlException (0x80131904(:与网络相关或特定于实例 建立与 SQL Server 的连接时出错。这 找不到服务器或无法访问服务器。验证实例 名称正确,并且 SQL Server 配置为允许远程 连接。(提供程序:命名管道提供程序,错误:40 - 无法 打开与 SQL Server 的连接(]

System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential 凭据、对象提供程序信息、字符串新密码、安全字符串 newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean 应用瞬态故障处理( +1394
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, 数据库连接选项用户选项( +1120
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions( +70
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal 旧连接( +964
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal 旧连接( +114
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection( +1631
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +117
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& 连接( +267
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, 任务完成源 1 retry, DbConnectionOptions userOptions) +318
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
1 重试( +211
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource'1 retry( +393 System.Data.SqlClient.SqlConnection.Open(( +122
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior( +177
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, 命令行为( +182
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable( +123
System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments 参数( +2964
System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e( +369 System.Web.UI.WebControls.ListControl.PerformSelect(( +43
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound(( +139 System.Web.UI.WebControls.ListControl.OnPreRender(EventArgs e( +36
System.Web.UI.Control.PreRenderRecursiveInternal(( +107
System.Web.UI.Control.PreRenderRecursiveInternal(( +204
System.Web.UI.Control.PreRenderRecursiveInternal(( +204
System.Web.UI.Control.PreRenderRecursiveInternal(( +204
System.Web.UI.Control.PreRenderRecursiveInternal(( +204
System.Web.UI.Control.PreRenderRecursiveInternal(( +204
System.Web.UI.d__249.移动下一个(( +1400 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务( +13847892
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task 任务( +61
System.Web.Util.WithinCancellableCallbackTaskAwaiter.GetResult(( +32
System.Web.UI.d__523.移动下一个(( +9283

将应用程序发布到远程服务器时连接到 SQL 时出现问题

我想

通了,web.config文件中有一个杂项连接字符串导致程序返回该错误。 它是在我测试不同的连接方法时由Visual Studio自动添加的。 我删除了它,它起作用了。 我的连接字符串没有任何问题,当下一页加载并尝试使用自动输入的其他连接字符串时失败。 这就是为什么使用 GUI 界面有时只会导致问题的原因。