更新
我无法使用“Windows身份验证”(域)用户实现此操作。但是,如果使用“SQL Server身份验证”用户,则一切都会像预期的那样工作。
原始问题
我的连接字符串: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;"
}
}
然后我将它传递给一个静态类,来自于 "Startup.cs" 文件,像这样:
那么我将其传递给一个静态类,它位于 "Startup.cs" 文件中,就像这样:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
Orm.DatabaseConnection.ConnectionString = Configuration["ConnectionStrings:ConnectionString"];
}
这是我发起连接的地方:
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);
}
}
}
这是我的控制器:
public string Get()
{
using (var databaseConnection = Orm.DatabaseConnection.ConnectionFactory())
{
var sections = databaseConnection.Query("SELECT * FROM myTable").ToList();
return sections.ToString();
}
}
在这条线上:
var databaseConnection = Orm.DatabaseConnection.ConnectionFactory();
返回:
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()"
我在new SqlConnection
处遇到了错误:"error CS0119: 'SqlConnection'是一种类型,在给定的上下文中无效"
。
但程序不会因为这些错误而停止执行。
然后应用程序在以下行上挂起:
var sections = databaseConnection.Query("SELECT * FROM myTable").ToList();
我正在使用Dapper作为我的ORM(而不是EntityFramework)。在“myTable”SQL表中只有17行和5列,因此它应该加载很快。
我尝试了各种不同的connectionStrings,但它总是失败。如果我在.NET Framework 4.5上尝试相同的操作,则一切正常。问题出在.NET Core 2.0上。
欢迎任何有关修复此问题的想法,因为我已经花费了太多时间。
SqlConnection
构造函数不应该对ServerVersion
属性进行任何操作。如果你试图在关闭的连接上读取.ServerVersion
(如new SqlConnection("").ServerVersion
),就会得到这个错误,我预期这会发生在稍后。请问您需要翻译什么其他内容吗? - Jeroen MostertConfigureServices
方法中,使用Configuration["ConnectionStrings:RutarConnectionString"]
代替Configuration["ConnectionStrings:ConnectionString"]
如何?!;) - shA.t