Sve*_*ang 115 .net sql-server iis-6 web-applications sql-server-2005
我知道这几乎是重复的:错误"登录失败,用户NT AUTHORITY\IUSR""在ASP.NET和SQL Server 2008和用户登录失败"用户名" -在外部System.Data.SqlClient.SqlException与LINQ项目/类库但有些东西与我服务器上的其他应用程序相比并没有加起来,我不知道为什么.
正在使用的盒子:
Web Box
SQL框
SQL测试框
我的应用程序:
我有一个ASP.NET Web应用程序,它引用了一个使用LINQ-to-SQL的类库.连接字符串在类库中正确设置.按照在外部项目/类库System.Data.SqlClient.SqlException与LINQ -用户登录失败"用户名"我还添加了此连接字符串的Web应用程序.
连接字符串使用SQL凭据(在Web应用程序和类库中):
<add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
此连接通过将其添加到服务器资源管理器确认为正常工作.这是我的.dbml文件正在使用的连接字符串.
问题:
我收到以下错误:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Run Code Online (Sandbox Code Playgroud)
现在引用ASP.NET和SQL Server 2008中的错误"登录失败的用户'NT AUTHORITY\IUSR'"它说真的是本地网络服务并且使用任何其他非域名都不起作用.
但我很困惑,因为我检查了SQL Box和SQL Test Box SQL Management Studio,并且都NT AUTHORITY/NETWORK SERVICE在安全 - >登录,在数据库级别,未列在安全 - >用户下,但在数据库级别安全 - >用户我将用户显示在连接字符串中.
在Web服务器上的NTFS级别,权限使NETWORK SERVICE具有完全控制权.
我之所以感到困惑,是因为我的Web服务器上有许多其他Web应用程序,它们在SQL Box和SQL Test Box上引用数据库,它们都可以工作.但除了我使用类库之外,我找不到它们和我当前的应用程序之间的区别.那会有关系吗?检查NTFS权限,服务器和数据库级别的安全登录设置,连接字符串和连接方法(SQL Server凭据)以及IIS应用程序池和其他文件夹选项都是相同的.
为什么这些应用程序在没有将machinename $添加到我的任何一个SQL框的权限的情况下工作?但这就是一个链接告诉我要解决这个问题的方法.
Rem*_*anu 150
NETWORK SERVICE和LocalSystem将始终作为本地的相应帐户(内置\网络服务和内置\系统)进行身份验证,但两者都将远程验证为计算机帐户.
如果您发现类似故障Login failed for user 'DOMAIN\MACHINENAME$'意味着作为NETWORK SERVICE或LocalSystem运行的进程已访问远程资源,则已将自身身份验证为计算机帐户并被拒绝授权.
典型示例是在应用程序池中运行的ASP应用程序,该应用程序池集使用NETWORK SERVICE凭据并连接到远程SQL Server:应用程序池将作为运行应用程序池的计算机进行身份验证,并且此机器帐户需要被授予访问权限.
当拒绝访问计算机帐户时,必须授予计算机帐户访问权限.如果服务器拒绝登录"DOMAIN\MACHINE $",则必须将"DOMAIN\MACHINE $"的登录权限授予NETWORK SERVICE.授予对NETWORK SERVICE的访问权限将允许作为NETWORK SERVICE运行的本地进程连接,而不是远程连接,因为远程的进程将验证为DOMAIN\MACHINE $.
如果您希望asp应用程序作为SQL登录连接到远程SQL Server,并且您获得有关DOMAIN\MACHINE $的例外,则表示您在连接字符串中使用Integrated Security.如果这是意外的,则意味着您搞砸了所使用的连接字符串.
Zai*_*Ali 30
使用IIS配置应用程序时出现此错误,并且IIS转到SQL Server并尝试使用没有适当权限的凭据登录.设置复制或镜像时也会发生此错误.我将讨论一个始终有效且非常简单的解决方案.转到SQL Server >>安全>>登录,右键单击NT AUTHORITY\NETWORK SERVICE并选择属性
在新打开的"登录属性"屏幕中,转到"用户映射"选项卡.然后,在"用户映射"选项卡上,选择所需的数据库 - 尤其是显示此错误消息的数据库.在下部屏幕上,检查角色db_owner.单击确定.
nZe*_*eus 16
在我的情况下,我有Identity="ApplicationPoolIdentity"我的IIS应用程序池.
我将IIS APPPOOL\ApplicationName用户添加到SQL Server之后就可以了.
小智 12
对我有用的技巧是Integrated Security从我的连接字符串中删除并User ID=userName; Password=password在App.config你的libruary中添加一个常规的连接字符串可能没有使用集成安全性,但创建的Web.config是!
小智 11
一位同事有同样的错误,这是由于IIS中的一点配置错误.
为Web应用程序分配了错误的应用程序池.
实际上,我们使用具有特定身份的自定义应用程序池来满足我们的需求.
在他的本地IIS管理器 - >站点 - >默认网站 - >我们的Web应用程序名称 - >基本设置...应用程序池是"DefaultAppPool"而不是我们的自定义应用程序池.
设置正确的应用程序池解决了问题.
Raj*_*ral 11
基本上解决这个问题我们需要设置一些像
使用Windows验证的连接字符串包含任何Trusted_Connection=Yes属性或属性等同Integrated Security=SSPI于Web.config文件
我的数据库连接处于Windows身份验证模式.所以我通过简单地将Application Pools Identity从ApplicationPoolIdentity更改为我的域登录凭据DomainName\MyloginId来解决它
步:
选择应用程序的名称
转到高级设置
对我来说它已经解决了.
注意:在生产环境或IT环境中,您可能在应用程序池标识的同一域下拥有服务帐户.如果是这样,请使用服务帐户而不是登录.
小智 10
我添加<identity impersonate="true" />到我的web.config,它工作正常.
小智 5
对我来说,当我用一个允许访问数据库的网络帐户替换默认的内置帐户"ApplicationPoolIdentity"时问题得到了解决.
可以在Internet Information Server(IIS 7+)>应用程序池> Advanded Settings> Process Model> Identity中进行设置
| 归档时间: |
|
| 查看次数: |
162088 次 |
| 最近记录: |