【问题标题】:Visual Studio connects to database, but application within using the same connection string cannotVisual Studio 连接到数据库,但使用相同连接字符串的应用程序不能
【发布时间】:2020-06-10 02:58:14
【问题描述】:

使用Data Connections 下的SSMS 和Visual Studio 2015 的Server Explorer 选项卡,我可以毫无问题地在远程服务器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 配置为允许远程连接。 (提供者:命名 Pipes Provider,错误: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;
}

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

【问题讨论】:

  • 你确定你的 conInfo.ConnectionString 是正确的吗?
  • 您的 Oracle DB 没有名称吗?使用 IP 地址通常是一种高级选项。
  • @Henrique:我有很多奇妙的理由可以确定conInfo.ConnectionString 包含我一直在编辑的字符串,所有这些显然都是错误的,因为这就是问题所在。 (打脸)。谢谢。如果您以完整回复的形式发布,我会将其标记为正确,因为“无论如何都要检查明显的内容”通常是解决方案。
  • @silkfire:我们所有的服务器都已命名。我同意,在大多数情况下使用 IP 会很奇怪。在这种情况下我使用了一个 IP,因为我们的 DNS 还不知道这个特定服务器的 IP。
  • 试试Data Source=(HOST=123.456.78.9)

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


【解决方案1】:

正如我在 cmets 中所说,也许是你的代码:

conInfo.ConnectionString

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

看看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多