在调试中使用我的项目我没有问题。但是在IIS中运行它我收到此错误:
System.Data.SqlClient.SqlException:用户'domain \ name-PC $'登录失败。
堆栈跟踪
[SqlException (0x80131904): Login failed for user 'CAPLUGSLLC\OETINGER-PC$'.]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +6749670
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +815
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4515
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +84
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +53
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +368
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +6777754
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +6778255
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) +878
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +1162
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +72
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +6781425
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +103
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +2105
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +116
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +1089
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6785863
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +233
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +278
System.Data.SqlClient.SqlConnection.Open() +239
System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) +65
System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() +38
System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() +30
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +81
System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +54
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +446
System.Linq.Enumerable.ToList(IEnumerable`1 source) +80
MvcMobile.Controllers.HomeController.Index() +38
lambda_method(Closure , ControllerBase , Object[] ) +79
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +261
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +34
System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +124
System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +839035
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +15
System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +33
System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +839620
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +65
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +51
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +51
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
我可以通过Google找到的头号解决方案是更改无效的应用程序池高级身份设置。
我正在使用IIS 7.5,我正在连接到SQLServer 2012,我的连接字符串在下面。
连接字符串
<add name="Caplugs_Nav_DataConnectionString" connectionString="Data Source=01DEV\SQLDEV01;Initial Catalog=Caplugs_Nav_Data;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"
providerName="System.Data.SqlClient" />
答案 0 :(得分:20)
只需设置Integrated Security=False
即可,根据True
和False
之间的comment差异,它会有效:
True
会忽略User ID
和Password
(如果提供)并使用正在运行的进程SSPI(Security Support Provider Interface )
它将使用它们,如果提供这就是MS更喜欢这个的原因。 它们是等效的,因为它们使用相同的安全机制进行身份验证,但就是这样。
答案 1 :(得分:16)
假设您打算使用Windows身份验证来模拟服务帐户,则必须在IIS和ASP.NET中设置Windows身份验证。
在IIS中,确保添加并启用了Windows身份验证模块。还要确保您的应用程序池在域帐户下运行,而不是在本地帐户下运行。
在ASP.NET中,确保将身份验证模式属性设置为&#34; Windows&#34;
<system.web>
<authentication mode="Windows"/>
</system.web>
答案 2 :(得分:3)
如果您的SQL Server尚未配置为使用混合模式身份验证,您也可能会收到此错误 - 它实际上并未告诉您未启用此功能!
答案 3 :(得分:3)
我也有类似的经历,花了我一些时间解决问题。不过,我自己的情况是ASP.Net MVC Core
和Core
框架。设置Trusted_Connection=False;
解决了我的问题。
内部appsettings.json
文件
"ConnectionStrings": {
"DefaultConnection": "Server=servername; Database=databasename; User Id=userid; Password=password; Trusted_Connection=False; MultipleActiveResultSets=true",
},
答案 4 :(得分:2)
添加持久性安全信息=真;在连接字符串中。
答案 5 :(得分:1)
我只是遇到了这个错误,花了几天的时间才解决。最初问题中提到的红色鲱鱼错误消息使我们陷入混乱,加上Windows Event Viewer错误日志显示了类似的内容:
Login failed for user '(domain\name-PC)$'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]
以上都不是,用户具有SQL Server中所有必要的权限。
在我们的案例中,解决方案是将IIS中的应用程序池标识切换为NetworkService
。
答案 6 :(得分:1)
我尝试了一些建议的答案,但未能解决问题。最终,我发现默认的连接超时(不是命令超时)为15秒,一旦将其增加到60,几乎再也不会发生。
只需将其添加到您的连接字符串中:
;Connection Timeout=60
我选择60秒,但您可以输入任何您认为最适合自己需要的值。
答案 7 :(得分:0)
答案 8 :(得分:0)
我遇到了同样的情况。创建连接字符串,如下所示。
替换
"connectionString": "Data Source=server name;Initial Catalog=DB name;User id=user id;Password=password;Integrated Security=True;MultipleActiveResultSets=True"
作者
"connectionString": "Server=server name; Database=Treat; User Id=user id; Password=password; Trusted_Connection=False; MultipleActiveResultSets=true"
答案 9 :(得分:0)
有点笨,但是我的密码中有一个奇怪的字符(é)。省略它之后,我不再出现错误。
答案 10 :(得分:0)
从对象资源管理器检查 SQL Sever 的属性。
如果 Integrated Security 设置为 true,也请对连接字符串进行相同的更改。
check the screenshot of the property grid
它适用于 ASP.NET Core Web Api...
答案 11 :(得分:0)
将用户配置文件从 Windows 域迁移到 Azure Active Directory (AzureAD) 后,我遇到了这个问题,可能是因为我的用户名已更改,但我的配置文件目录没有。我通过删除 %APPDATALOCAL%\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB 解决了这个问题。