No se puede conectar a la base de datos SQL 2008 con .NET Core 2.0

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

Pregunta

ACTUALIZAR

Nunca podría hacer que esto funcione con un usuario de "Autenticación de Windows" (dominio). Pero con un usuario de "SQL Server Authentication", 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 de esta manera:

{
  "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", así:

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 "myTable" sql solo hay 17 filas y 5 columnas, por lo que debe cargarse rápidamente.

Probé todo tipo de conexiones diferentes, 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.

Respuesta popular

Intenta 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 grupo 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;

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



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué