周末,我们的服务器管理员设置了两台安装了 IIS 的虚拟 Windows 2008 计算机,并在 NLB 下进行设置。我进来将网站运行的应用程序池更改为我们的域帐户,该帐户对数据库和托管 .NET Web 应用程序 Sitefinity 的文件共享具有适当的访问权限,并将其更改为 .NET 4 Integrated。NLB 和两台服务器上的一切都运行良好。他在周二为我们的集群启动了第三台服务器,我执行了相同的操作。唯一的区别是我被授予了第三台服务器的管理员权限,因此我可以远程设置它,而不必去他的办公室。
他完全控制共享和 NTFS 权限,\\hostname\Sitefinity
而我相信我只有读取权限。我将网站指向\\hostname\Sitefinity\sitename
其他人所在的相同共享,并且身份验证/授权测试设置已通过。我从访问该网站http://localhost
(就像我在尝试集群的 IP 地址之前从其他两个网站成功访问一样),然后收到 HTTP 错误 401.3 - 未授权。我已多次验证应用程序池是否在同一个服务帐户下运行。
我尝试只访问一个简单的 test.htm。前两台服务器上都运行良好,但在第三台服务器上却出现同样的 401.3。我将我的开发项目复制到本地 inetpub 目录并重新指向网站,运行完美。
我打开了失败请求跟踪,但它的行为好像仍在运行本地 IUSR 帐户(而不是我的域帐户)?以下是文件缓存访问启动和跟踪中的错误的摘录:
FileName
\\hostname\sitefinity\sitename\test.htm
UserName
IUSR
DomainName
NT AUTHORITY
----------
Successful
false
FileFromCache
false
FileAddedToCache
false
FileDirmoned
true
LastModCheckErrorIgnored
true
ErrorCode
2147942405
LastModifiedTime
ErrorCode
Access is denied. (0x80070005)
----------
ModuleName
IIS Web Core
Notification
2
HttpStatus
401
HttpReason
Unauthorized
HttpSubStatus
3
ErrorCode
2147942405
ConfigExceptionInfo
Notification
AUTHENTICATE_REQUEST
ErrorCode
Access is denied. (0x80070005)
----------
然后,我的个人 AD 帐户被授予对共享的读/写权限,因此我创建了一个新的应用程序池并在其下设置站点,以防应用程序池出现问题但没有成功。
我在自己的帐户下创建了另一个,但仍然失败。似乎它并没有尝试访问我的应用程序池正在运行的帐户下的文件,尽管这是我以前做过的唯一方法。我在网站的高级设置中将物理路径凭据设置为服务帐户,它抛出了某种 500 错误,所以我认为这不是答案(而且我不必在其他服务器上这样做)。这就像我试图以某种方式强制模拟 IUSR 帐户之类的东西?
答案1
哇,我觉得自己有点愚蠢。我注意到工作服务器上有额外的 .net 4 应用程序池,但第一次没有用 Google 仔细搜索: http://msdn.microsoft.com/en-us/library/ie/k6h9cz8h.aspx
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -i
就是这样了。。我要为自己辩解,它抛出的错误对我来说似乎完全没有根据!:)