sql-server sql-server-2008 .net-core dapper asp.net-core-2.0

sql server - No se puede conectar a la base de datos SQL 2008 utilizando.NET Core 2.0



sql-server sql-server-2008 (2)

Intente agregar 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(); } }

Para evitar problemas con el conjunto de conexiones que se describe en los comentarios, agregue Pooling=false; a la cadena de conexión: Server=ip;Database=dbname;User Id=xxx/user;Password=pass;Pooling=false;

Edición: codifiqué la cadena de conexión y quité la fábrica para hacer el ejemplo más pequeño

ACTUALIZAR

Nunca podría hacer que esto funcione con un usuario de "Autenticación de Windows" (dominio). Pero con un usuario de "Autenticación de SQL Server", todo funciona como debería.

PREGUNTA ORIGINAL

My connectionString: Server=ip;Database=dbname;User Id=xxx/user;Password=pass;

La cadena de conexión se encuentra en appsettings.json así:

{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }, "ConnectionStrings": { "ConnectionString": "Server=ip;Database=dbname;User Id=xxx/user;Password=pass;" } }

Luego lo paso a una clase estática del archivo "Startup.cs", como este:

public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); Orm.DatabaseConnection.ConnectionString = Configuration["ConnectionStrings:ConnectionString"]; }

Aquí es donde inicio la conexión:

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); } } }

Y este es mi controlador:

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

Donde esta linea:

var databaseConnection = Orm.DatabaseConnection.ConnectionFactory();

devoluciones:

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()"

Y obtengo este error en la new SqlConnection : "error CS0119: ''SqlConnection'' is a type, which is not valid in the given context" .

Pero la ejecución del programa no se detiene debido a estos errores.

La aplicación se cuelga en la siguiente línea:

var sections = databaseConnection.Query("SELECT * FROM myTable").ToList();

Estoy usando Dapper como mi ORM (no EntityFramework). En la tabla sql "myTable" solo hay 17 filas y 5 columnas, por lo que debería cargarse rápidamente.

Intenté todo tipo de diferentes formas de conexión, pero siempre falla. Si intento lo mismo con .NET Framework 4.5, todo funciona bien. El problema es .NET Core 2.0.

Cualquier idea sobre arreglarlo es bienvenida. Porque ya pasé demasiadas horas en esto.


Intente crear una implementación autocontenida , esto debería eliminar y cosas de dependencia extrañas. Si funciona, al menos sabes que se debe a algún tipo de enlace de ensamblaje.

La excepción "error CS0119: ''SqlConnection'' is a type, which is not valid in the given context" huele como si lo fuera.