UPDATE
Я никогда не смог бы выполнить эту работу с пользователем Windows Authentication (domain). Но с пользователем "Аутентификация SQL Server" все работает так, как должно было.
ОРИГИНАЛЬНЫЙ ВОПРОС
My 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;"
}
}
Затем я передаю его статическому классу из файла "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' is a type, which is not valid in the given context"
.
Но выполнение этой программы не прекращается из-за этих ошибок.
Затем приложение зависает в следующей строке:
var sections = databaseConnection.Query("SELECT * FROM myTable").ToList();
Я использую Dapper как мой ORM (не EntityFramework). В таблице "myTable" sql всего 17 строк и 5 столбцов, поэтому она должна загружаться быстро.
Я пробовал всевозможные разныеStringString, но он всегда терпит неудачу. Если я попробую то же самое с .NET Framework 4.5, все будет хорошо. Проблема заключается в .NET Core 2.0.
Любая идея об исправлении приветствуется. Потому что я потратил слишком много часов на это уже.