我正在运行64位计算机。我的应用程序池配置为使用NETWORK SERVICE。我的应用程序在64位模式下运行时运行正常。
在32位模式下运行时(应用程序池上的Flag Enable32BitAppOnWin64),我经常会遇到权限错误,IIS无法访问临时文件夹。如果我在web.config中更改tempDirectory,则会暂时解决该问题。在我对我的应用程序进行另一次更改后,它会在以后经常返回。
tempDirectory =“c:\ temp \ iistemp4”时的示例 访问路径'c:\ temp \ iistemp4 \ tbmpos \ a93ceaf9 \ c953db72 \ ResX \ header.ascx.resources'被拒绝。 ---> System.UnauthorizedAccessException:拒绝访问路径'c:\ temp \ iistemp4 \ tbmpos \ a93ceaf9 \ c953db72 \ ResX \ header.ascx.resources'。
显然,NETWORK SERVICE可以访问该文件夹,因为它实际创建了它。恢复到64位模式可以解决此问题。
Process Monitor显示: 12:40:47.7314293 PM w3wp.exe 6184 CreateFile c:\ temp \ iistemp4 \ tbmpos \ a93ceaf9 \ c953db72 \ ResX \ header.ascx.resources ACCESS DENIED Desired Access:Generic Write,Read Attributes,Disposition:OpenIf,Options:Synchronous IO非警报,非目录文件,打开无召回,属性:不适用,ShareMode:无,AllocationSize:0
这是我在Process Monitor中可以看到的唯一访问权限。
但是,如果我使用Windows资源管理器打开文件夹,我会在信息上获得一些“BUFFER OVERFLOW”:所有者,DACL和所有者,组,DACL。 IIS是否使用不正确的权限创建文件?
有什么想法吗?
答案 0 :(得分:1)
感谢进程监视器,我意识到有些东西在我的c:\ temp \中设置了奇怪的权限,并强制传播给所有孩子。这在奇怪的环境中引起了奇怪,例如这个。
我移动到没有任何继承权限的另一个文件夹,清理了权限,给了网络服务完全访问权限,它似乎已解决。
答案 1 :(得分:0)
由于资源共享,是否未发生故障?尝试使用像filemon这样的工具观看。