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

时间:2016-04-27 22:31:46

标签: c# sql-server visual-studio-2015 connection-string

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

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

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

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

  

“发生与网络相关或特定于实例的错误   建立与SQL Server的连接。找不到服务器或   无法访问。验证实例名称是否正确   SQL Server配置为允许远程连接。 (提供者:命名   管道提供程序,错误:40 - 无法打开与SQL的连接   服务器)“

内部异常消息:

  

“找不到网络路径”

我知道服务器/防火墙/网络设置是正确的。这就离开了申请。

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版本的查询可能需要几秒钟才能返回。 应用程序应该是正确的,因为它连接到家中的同一服务器(也是服务器的位置)和运行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;
}

我打赌我错过了一些简单的事情,但我很感激能帮助你做些什么。

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,可能是你的代码:

conInfo.ConnectionString

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

检查出来