无法使用.NET Core 2.0连接到SQL 2008数据库

Tad*_*dej 17 sql-server sql-server-2008 dapper .net-core asp.net-core-2.0

UPDATE

我永远无法使用"Windows身份验证"(域)用户进行此操作.但是使用"SQL Server身份验证"用户,一切都像它应该的那样工作.

原始问题

我的connectionString: Server=ip;Database=dbname;User Id=xxx\user;Password=pass;

连接字符串位于appsettings.json中,如下所示:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "ConnectionString": "Server=ip;Database=dbname;User Id=xxx\user;Password=pass;"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我将它传递给"Startup.cs"文件中的静态类,如下所示:

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();

    Orm.DatabaseConnection.ConnectionString = Configuration["ConnectionStrings:ConnectionString"];
}
Run Code Online (Sandbox Code Playgroud)

这是我发起连接的地方:

using System.Data.SqlClient;

namespace MyProject.Orm
{
    public static class DatabaseConnection
    {
        public static string ConnectionString { get; set; }

        public static SqlConnection ConnectionFactory()
        {
            return new SqlConnection(ConnectionString);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

public string Get()
{
    using (var databaseConnection = Orm.DatabaseConnection.ConnectionFactory())
    {
        var sections = databaseConnection.Query("SELECT * FROM myTable").ToList();
        return sections.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

这条线在哪里:

var databaseConnection = Orm.DatabaseConnection.ConnectionFactory();
Run Code Online (Sandbox Code Playgroud)

收益:

ServerVersion: "'databaseConnection.ServerVersion' threw an exception of type 'System.InvalidOperationException'"
Message: "Invalid operation. The connection is closed."
Source: "System.Data.SqlClient"
StackTrace: "at 
System.Data.SqlClient.SqlConnection.GetOpenTdsConnection()\n   
at 
System.Data.SqlClient.SqlConnection.get_ServerVersion()"
Run Code Online (Sandbox Code Playgroud)

我得到这个错误new SqlConnection:"error CS0119: 'SqlConnection' is a type, which is not valid in the given context".

但由于这些错误,程序执行不会停止.

然后该应用程序挂起在以下行:

var sections = databaseConnection.Query("SELECT * FROM myTable").ToList();
Run Code Online (Sandbox Code Playgroud)

我正在使用Dapper作为我的ORM(不是EntityFramework).在"myTable"中,sql表只有17行和5列,因此它应该加载快速.

我尝试了各种不同的connectionStrings,但总是失败.如果我尝试使用.NET Framework 4.5,一切正常.问题是.NET Core 2.0.

任何关于修复它的想法都是受欢迎的 因为我已经花了太多时间在这上面.

Mik*_*nov 6

尝试添加databaseConnection.Open().

public string Get()
{
    using (var databaseConnection = new SqlConnection(@"Server=ip;Database=dbname;User Id=xxx\user;Password=pass;Pooling=false;"))
    {
        databaseConnection.Open();
        var sections = databaseConnection.Query("SELECT * FROM myTable").ToList();
        return sections.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

要避免在注释中描述的连接池问题,请添加Pooling=false;到连接字符串: Server=ip;Database=dbname;User Id=xxx\user;Password=pass;Pooling=false;

编辑:我硬编码连接字符串并删除工厂以使示例更小