访问路径“”被拒绝

Access to the path "" is denied

我知道这个问题已经被问过很多次了,但我的问题是不同的。我正在开发一个启用了 windows 身份验证和模拟的 Web 应用程序。我以 domain\user 身份登录到我的计算机。在此应用程序中,我只是在网络计算机目录中创建一个名为 newDir 的目录,例如 \computerName\myFolder。我对该目录有完全的访问控制权。当我在 web.config 文件和 运行 应用程序中明确输入我的用户名和密码作为 <identity impersonate="true" userName="domain\user" password="pass"> 时,它不会提示输入用户名和密码,而是按预期在指定目录中创建目录.但是,当我从 identity 元素中删除用户名和密码而使 impersonation 处于打开状态并且 运行 应用程序时,它会提示输入用户名和密码,但不接受我删除的相同用户名和密码来自 web.config 文件中的 identity 元素,有时它不提示输入用户名和密码,只显示异常页面 access to the path "\computerName\myFolder\newDir" is denied.

为了测试,我添加了一行来检查代码在哪个用户名下 运行ning:

Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name + "<br/>");

它打印出相同的 domain\user 用户名。

有人知道这里发生了什么吗?

听起来使用模拟访问 UNC 路径与本地路径是一种特殊情况。根据https://msdn.microsoft.com/en-us/library/aa292118%28v=vs.71%29.aspx、"If the application resides on a UNC share, ASP.NET always impersonates the IIS UNC token to access that share unless a configured account is used. If you provide an explicitly configured account, ASP.NET uses that account in preference to the IIS UNC token."

这个回答UNC access whilst using impersonation asp.net也有一些指点。

听起来您可能仅限于一个用户访问 UNC 用户 - 在 web.config 中配置的一个用户、应用程序池标识或您选择进行委派的一个用户。