C# 如何修复System.Data.SqlClient.SqlException:用户登录失败

C# 如何修复System.Data.SqlClient.SqlException:用户登录失败,c#,connection-string,sql-server-2017,C#,Connection String,Sql Server 2017,当我运行它时,我得到以下信息: 我在IIS、SQL Server中启用了Windows身份验证,并在web.config中添加了身份验证方法: <system.web> <authentication mode="Windows"/> </system.web> 错误: [SqlException(0x80131904):用户登录失败'Shade'] System.Data.SqlClient.SqlInternalConnectionDS..ctor

当我运行它时,我得到以下信息:

我在IIS、SQL Server中启用了Windows身份验证,并在web.config中添加了身份验证方法:

<system.web>
  <authentication mode="Windows"/>
</system.web>
错误:

[SqlException(0x80131904):用户登录失败'Shade']

System.Data.SqlClient.SqlInternalConnectionDS..ctor(DbConnectionPoolIdentity、SqlConnectionString connectionOptions、SqlCredential凭证、对象提供信息、String newPassword、SecureString newSecurePassword、Boolean redirectedUserInstance、SqlConnectionString userConnectionOptions、SessionData重新连接SessionData、DbConnectionPool池、String accessToken、Boolean applyTransientFaultHandling,SqlAuthenticationProviderManager sqlAuthProviderManager)+907
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项、DbConnectionPoolKey poolKey、Object poolGroupProviderInfo、DbConnectionPool池、DbConnectionOwningConnection、DbConnectionOptions用户选项)+334
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池、DbConnectionOwningObject、DbConnectionOptions选项、DbConnectionPoolKey池键、DbConnectionOptions用户选项)+38
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection-owningObject、DbConnectionOptions-userOptions、DbConnectionInternal-oldConnection)+699
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject、DbConnectionOptions userOptions、DbConnectionInternal oldConnection)+89
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection-owningObject,UInt32-waitForMultipleObjectsTimeout,Boolean-allowCreate,Boolean-OnlyOnEckConnection,DbConnectionOptions-userOptions,DbConnectionInternal&connection)+426
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject、TaskCompletionSource
1重试、DbConnectionOptions用户选项、DbConnectionInternal和connection)+78
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection、TaskCompletionSource
1重试、DbConnectionOptions用户选项、DbConnectionInternal oldConnection、DbConnectionInternal&connection)+191
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection,DbConnectionFactory connectionFactory,TaskCompletionSource
1重试,DbConnectionOptions用户选项)+154
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory,TaskCompletionSource
1重试,DbConnectionOptions用户选项)+21
System.Data.SqlClient.SqlConnection.tryopeniner(TaskCompletionSource
1重试)+90
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1重试)+443
System.Data.SqlClient.SqlConnection.Open()+96
D:\YCS\YourCoffeeShop\YourCoffeeShop\App\u Code\ConnectionClass.cs:29中的YourCoffeeShop.App\u Code.ConnectionClass.GetCafeaByType(字符串cafeaType) YourCoffeeShop.Pages.Cafea.FillPage()中的D:\YCS\YourCoffeeShop\YourCoffeeShop\Pages\Cafea.aspx.cs:26
YourCoffeeShop.Pages.Cafea.Page\u加载D:\YCS\YourCoffeeShop\YourCoffeeShop\Pages\Cafea.aspx.cs中的(对象发送者,事件参数e):17
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象发送者,事件参数)+51
System.Web.UI.Control.OnLoad(EventArgs e)+95
System.Web.UI.Control.LoadRecursive()+59
System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+678


检查SQL Server错误日志。它将包含登录失败错误的具体原因,出于安全原因,该错误不会返回到客户端。此外,请确保您已将SQL Server配置为允许混合模式身份验证,以便允许SQL身份验证。它是这样配置的。至于日志…它是:登录失败用户“Shade”的登录失败。原因:找不到与提供的名称匹配的登录名。[客户端:]并且用户“Lenovo pc\Shade”的登录失败。原因:无法打开显式指定的数据库“tipuridecafeaDB”。[客户端:]简而言之:集成身份验证与此有很大关系,因此,您必须知道这意味着什么,从单个服务器概念到不同的服务器,一直到服务器之间的关系(例如,
Windows AD/域
),以及您的应用程序的身份配置是什么/如何配置的(它将如何“登录”到SQL)。通常,在托管环境(无AD/域)中,如上所述,配置混合模式。对于第一个错误,SQL帐户
Shade
似乎尚未添加为服务器的登录名。对于“无法打开显式指定的数据库'tipuridecafeaDB'”使用Windows auth时出错,似乎
Lenovo pc\Shade
尚未作为用户添加到该数据库中。
<connectionStrings>
    <clear/>
    <add name="cafeaconnection" 
         connectionString="Data source=LENOVO-PC\SQLEXPRESS; Initial catalog=tipuridecafeaDB; user id=user; password=password; persist security info=True;" 
         providerName="System.Data.SqlClient" />
    <add name="ConnectionString" 
         connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\tipuridecafeaDB.mdf;Integrated Security=True" 
         providerName="System.Data.SqlClient"/>
</connectionStrings>