Permissions 为IIS 7.5和Windows Server 2008 R2下的ASP.NET授予网络UNC文件夹的写入权限 布鲁夫
我们的应用程序正在尝试使用在.NET 4.5、IIS 7.5和Windows Server 2008 R2下运行的ASP.NET web服务将文件写入UNC文件夹。但是,任何将文件写入所需位置的尝试都会导致访问被拒绝异常 这项任务似乎很简单,但我和我的团队已经对此进行了一段时间的故障排除,我们很难确定是什么原因导致了错误。下面是我们设置的详细信息,以及到目前为止我们尝试和发现的内容。为了保护无辜者,名字已经改变了 环境设置 web服务器mywebserver有一个名为My.Site.Com的网站,其相应的应用程序池名为My.Site.Com。应用程序池的配置如下所示Permissions 为IIS 7.5和Windows Server 2008 R2下的ASP.NET授予网络UNC文件夹的写入权限 布鲁夫,permissions,iis-7.5,access-denied,Permissions,Iis 7.5,Access Denied,我们的应用程序正在尝试使用在.NET 4.5、IIS 7.5和Windows Server 2008 R2下运行的ASP.NET web服务将文件写入UNC文件夹。但是,任何将文件写入所需位置的尝试都会导致访问被拒绝异常 这项任务似乎很简单,但我和我的团队已经对此进行了一段时间的故障排除,我们很难确定是什么原因导致了错误。下面是我们设置的详细信息,以及到目前为止我们尝试和发现的内容。为了保护无辜者,名字已经改变了 环境设置 web服务器mywebserver有一个名为My.Site.Com的网站
.NET Framework Version : v4.0
Enable 32-bit Applications : False
Managed Pipeline Mode : Integrated
Name : My.Site.Com
Identity : ApplicationPoolIdentity
Load User Profile : False
我们试图写入的UNC路径是\myotherserver\mydirectories\output,其中mydirectories是实际共享。在此共享上,名为mygroup www的域组已被授予对共享和所有子文件夹的完全权限。机器帐户(即mywebserver)是此mygroup www组的成员
注意:目前,此UNC路径实际上位于同一条路径上
机器,mywebserver。然而,这最终将被转移到另一台机器上
比我们的测试环境和生产环境中的mywebserver更重要
当它准备好了。目前,我只有一个测试环境进行故障排除
可以通过执行以下代码来复制错误
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public string ExportReport(int reportId)
{
try
{
string output = ConfigHelper.OutputPath + "test.html"; // UNC path
string url = ConfigHelper.VirtualPath + "test.html";
string[] lines = { "Hello", "World!" };
File.WriteAllLines(output, lines); // Access Denied!
return url;
}
catch (System.Exception ex)
{
Logger.ErrorException("Error exporting report", ex);
throw;
}
}
故障排除
失败的尝试
我们尝试了对文件夹(如下所列)的组/用户权限的各种组合。在运行这些测试时,我们还运行了Process Monitor。对于每个配置,我们都看到了相同的结果。w3wp.exe进程试图在所需位置创建文件,但报告了访问被拒绝的结果。每个配置的用户都是IIS APPPOOL\My.Site.Com,如预期的那样
您的Windows7dev计算机可能工作正常,因为它比服务器更频繁地重新启动。祝贺你写得非常好,而且是一份全面的bug报告。在这里我很少看到这种情况。我在ASP.NET应用程序中使用AppPoolIdentity访问网络共享时遇到类似问题(访问被拒绝)。 使用NetworkService帐户或其他域帐户