访问指向网络共享的虚拟目录时出现401.1错误

5

SERVER1上运行着IIS5。

IIS中的一个虚拟目录myfiles指向另一台计算机上的共享位置 //SERVER2/myfilesshare。

当我尝试访问页面:http://SERVER1/myfiles时,出现以下错误:

您无权查看此页面

HTTP 401.1 - 未经授权: 登录失败

Internet Information Services

我已经在IIS中三次检查了“连接为...”设置。我用于访问共享的凭据是正确的--当我在Windows资源管理器中连接到该共享时它们有效,但是通过IIS虚拟目录时却无法使用。 我尝试将SERVER2上的文件夹授予Everyone完全权限,但没有成功。

有何想法?


最终有运气吗?我现在正面临着完全相同的问题。 - abatishchev
4个回答

9
这是我解决问题的方法,可能会对你有所帮助。
默认情况下,当使用匿名身份验证时,IIS使用名为“ IUSR”的本地用户来处理虚拟目录。它不使用应用程序标识,如果您使用procmon,则应该很明显。
如何强制使用应用程序标识?
简单,在IIS管理器中:
1)转到“身份验证”
2)编辑“匿名身份验证”
3)选择“应用程序池标识”
4)重新启动IIS,它应该可以工作了。
可以使用PS完成相同的操作: Set-WebConfigurationProperty -filter /system.WebServer/security/authentication/AnonymousAuthentication -name username -value "" 此链接包含优缺点:http://blogs.technet.com/b/tristank/archive/2011/12/22/iusr-vs-application-pool-identity-why-use-either.aspx

2

权限问题可能很棘手。尝试在“其他计算机”上运行filemon。可以在此处下载它:http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx (这不是一个大型应用程序,只是一个轻便小巧的工具)

启动filemon后,停止监视器进程(我相信在启动应用程序时默认已经打开),清除记录的数据,为您无法访问的文件夹创建一个过滤器。启动监视器进程,请求您的网页。停止监视器进程,并在filemon中查找“访问被拒绝”的消息。当找到时,filemon还将提到正在尝试获取访问权限的实际用户的名称。这可能有助于您找到解决方案。

顺便说一句,当使用Windows Server 2008时,您需要使用processmonhttp://technet.microsoft.com/en-us/sysinternals/bb896645.aspx


由于某种原因,filemon在共享机器上没有显示与该文件相关的任何内容。事件查看器显示ASPNET在网络共享上的web.config文件上没有权限。我如何给server1上的本地ASPNET用户访问server2的权限? - frankadelic
你能在那个服务器上创建一个ASPNET账户并分配相关权限吗?另外,你可以尝试使用域账户运行ASP.NET应用程序。 - Lex Li

1
想象一种情况,你希望IIS服务器访问文件服务器上的共享资源,但它们不在同一个域中。
如果你能够按照以下步骤操作并使其正常工作(我已经在Win2008-R1 32位文件服务器和带有IIS 7的Win2008-R2 64位上完成了测试),那么你就可以应对任何情况。
  • 在两个服务器上使用相同名称的本地帐户和相同的密码
  • 在IIS上,使用aspnet_regiis -ga MyAccount将本地帐户访问权限授予IIS核心
  • 现在将其用作网站的应用程序池标识
  • 使用本地安全策略(管理工具)为本地帐户启用委派信任
  • 重新启动IIS服务器
  • 在文件服务器上,使用本地安全策略为本地帐户启用网络访问
  • 创建共享并授予所需权限给本地帐户(也根据需要在安全选项卡中设置权限)
  • 在两个服务器上打开文件和打印共享端口(尽可能限制),以便在使用Windows资源管理器时可以正常工作
  • 回到IIS,在虚拟目录中使用UNC路径连接到来自文件服务器的共享文件夹
  • 只需使用透传身份验证(这将使用您的本地帐户)
  • 您可以告诉虚拟目录的匿名身份验证设置也使用应用程序池标识

使用一些测试/验证工具。关键是使用服务帐户(域或其他方式)进行委派信任,并让IIS使用您想要使用的帐户,而不是本地服务器或网络服务。

这花了我一整天的时间来解决。StackOverflow和其他互联网来源中的各种线程帮助我指向不同的资源,但在任何地方都没有找到我的确切答案。希望下一个遇到此问题的人可以通过我的描述获得速度提升,并顺利解决问题。


0

尝试在虚拟目录安全选项卡(在IIS中)上启用Windows身份验证。


当我访问该网站时,会弹出用户名/密码提示。然而,即使我输入了正确的凭据,它也无法正常工作。请注意,这两个服务器不属于同一个域。 - frankadelic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接