Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net核心应用程序使用错误的凭据连接到SQL server_C#_Sql Server_.net Core_Asp.net Core 2.2 - Fatal编程技术网

C# .Net核心应用程序使用错误的凭据连接到SQL server

C# .Net核心应用程序使用错误的凭据连接到SQL server,c#,sql-server,.net-core,asp.net-core-2.2,C#,Sql Server,.net Core,Asp.net Core 2.2,我正在构建一个.Net Core(2.2,从2.1开始)应用程序,我一直在使用一个本地托管的数据库,但随着我的继续,我想转移到一个托管在服务器上的数据库,该数据库将来将位于该服务器上。问题是我无法将新数据库构建到它应该去的地方,因为它似乎试图使用我工作站上的当前用户帐户登录,而不是使用连接字符串中指定的凭据。这是appsettings.json文件中的连接字符串: "ConnectionStrings": { "DocHandlerContext": "Server=SQLserverN

我正在构建一个.Net Core(2.2,从2.1开始)应用程序,我一直在使用一个本地托管的数据库,但随着我的继续,我想转移到一个托管在服务器上的数据库,该数据库将来将位于该服务器上。问题是我无法将新数据库构建到它应该去的地方,因为它似乎试图使用我工作站上的当前用户帐户登录,而不是使用连接字符串中指定的凭据。这是appsettings.json文件中的连接字符串:

"ConnectionStrings": {
    "DocHandlerContext": "Server=SQLserverName\\SQLEXPRESS;Database=DocHandler;Trusted_Connection=True;MultipleActiveResultSets=true;User ID=xxxx;Password=xxxx"
},
下面是调用DB上下文的startup.js文件:

public class Startup
{
    public static string ConnectionString { get; private set; }

    public Startup(IConfiguration configuration)
    {
       Configuration = configuration;   

       ConnectionString = Configuration.GetConnectionString("DocHandlerContext");
    } 
public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        services.AddDbContext<DocHandlerContext>(options =>
                options.UseSqlServer(ConnectionString));
    }
但是,当我尝试使用新设置执行数据库更新命令时,我会收到一条错误消息,但我认为相关的问题是:

在数据库“master”中创建数据库的权限被拒绝。

查看SQL server日志表明它试图使用我当前登录的用户帐户登录,因此它似乎没有使用我指定的凭据。我不知道这是从哪里来的。它是否找不到连接字符串并且默认尝试windows身份验证?我还尝试在调试模式下运行应用程序,但在那里遇到了相同的错误:

fail: Microsoft.EntityFrameworkCore.Database.Connection[20004]
      An error occurred using the connection to database 'DocHandler' on server 'SQLSERVERNAME\SQLEXPRESS'.
System.Data.SqlClient.SqlException (0x80131904): Cannot open database "DocHandler" requested by the login. The login failed.
Login failed for user 'DOMAIN\Dennis'.

我已经尝试了一天来解决这个问题,一个想法是使用带有指定连接字符串的更新数据库,但在EF core中似乎不可用。

Remove
Trusted\u connection=True
从您的连接字符串中,它本质上指定应使用Windows Auth,因此它将忽略用户名和密码参数。使用
Trusted\u connection=True
可以使用
Windows authentication
连接到SQL Server。如果您想使用SQL身份验证(使用凭据
用户ID=xxxx;密码=xxxx
)进行连接,请设置
可信连接=False
谢谢!这是一件很容易忽略的小事…@Diado-加上你的评论作为答案,我会投赞成票,因为这是正确的答案question@Dennis安全的方法是使用Windows身份验证,而不是硬编码用户名和密码。在.NETCore之前,连接数据库的典型方式是向应用程序池帐户授予数据库权限。您的应用程序是如何托管的?自我主持?在IIS中进行?进程外?删除受信任的\u连接=True从您的连接字符串中,它本质上指定应使用Windows Auth,因此它将忽略用户名和密码参数。使用
Trusted\u connection=True
可以使用
Windows authentication
连接到SQL Server。如果您想使用SQL身份验证(使用凭据
用户ID=xxxx;密码=xxxx
)进行连接,请设置
可信连接=False
谢谢!这是一件很容易忽略的小事…@Diado-加上你的评论作为答案,我会投赞成票,因为这是正确的答案question@Dennis安全的方法是使用Windows身份验证,而不是硬编码用户名和密码。在.NETCore之前,连接数据库的典型方式是向应用程序池帐户授予数据库权限。您的应用程序是如何托管的?自我主持?在IIS中进行?进程外?
fail: Microsoft.EntityFrameworkCore.Database.Connection[20004]
      An error occurred using the connection to database 'DocHandler' on server 'SQLSERVERNAME\SQLEXPRESS'.
System.Data.SqlClient.SqlException (0x80131904): Cannot open database "DocHandler" requested by the login. The login failed.
Login failed for user 'DOMAIN\Dennis'.