Visual Studio 连接到数据库,但使用相同连接字符串的应用程序无法连接

Visual Studio connects to database, but application within using the same connection string cannot

使用 SSMS 和 Visual Studio 2015 年 Server Explorer 选项卡 Data Connections,我可以毫无问题地在远程服务器 KOSH 上执行查询。为什么 MVC 应用程序 运行 在 Visual Studio/IIS Express 中本地无法执行相同的操作?

使用VS2015的连接Properties,我得到它的连接字符串:

Data Source=123.456.78.9;Persist Security Info=True;User ID=Foo;Password=Bar

使用该连接字符串,迎接 MVC 应用程序的是:

"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"

内部异常消息:

"The network path was not found"

我知道 server/firewall/network 设置是正确的。这就剩下了应用程序。

using(var connection = Database.Connection(conInfo.ConnectionString, provider)) {
    // rowCountSql: SELECT SUM(rows) TM_ROWCOUNT FROM sys.partitions
    //              WHERE object_id = object_id(@tableName) and index_id IN (0,1)
    // Any other SQL yields same error
    var countTask = connection.QueryAsync(rowCountSql, new { tableName = Editor.TableName });
}

使用异步是因为 Oracle 版本的查询可能需要几秒钟才能到达 return。 该应用程序应该是正确的,因为它从家里(也是服务器的位置)连接到同一台服务器,并且连接到远程数据中心的相同数据库 运行 2008R2 到 2014 没有问题。

Database.Connection() 是:

// This is unlikely to be the problem as it is very well tested
public static DbConnection Connection(string connectionString, string databaseProvider) {
    DbProviderFactory databaseFactory = DbProviderFactories.GetFactory(databaseProvider);
    DbConnection connection = databaseFactory.CreateConnection();
    if(connection != null)
        connection.ConnectionString = connectionString;
    return connection;
}

我敢打赌我遗漏了一些简单的东西,但如果您能提供帮助,我将不胜感激。

正如我在评论中所说,也许您的代码片段:

conInfo.ConnectionString

不包含您想要的正确连接字符串。

看看