2011-04-26 111 views
2

我正在运行64位计算机。我的应用程序池被配置为使用NETWORK SERVICE。当它运行在64位模式下时,我的应用程序运行良好。使用Enable32BitAppOnWin64的IIS权限问题

当以32位模式运行(应用程序池上的标志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'被拒绝。

显然,网络服务可以访问该文件夹,因为它实际上创建了它。恢复到64位模式可解决此问题。

进程监视器显示: 12:40:47.7314293 PM的w3wp.exe 6184的CreateFile C:\ TEMP \ iistemp4 \ tbmpos \ a93ceaf9 \ c953db72 \的ResX \ header.ascx.resources拒绝访问所需的访问:通用写,读属性,处理:OpenIf,选项:同步IO非警报,非目录文件,打开否调用,属性:n/a,ShareMode:无,AllocationSize:0

这是我可以看到的唯一访问在进程监视器中。

但是,如果我使用Windows资源管理器打开文件夹,我会在Information:Owner,DACL和Owner,Group,DACL上获得一些'BUFFER OVERFLOW'。 IIS是否以不正确的权限创建文件?

任何想法?

+0

我也有这些配置选项,以防万一:batch =“false”optimizeCompilations =“true” – 2011-04-26 16:54:21

回答

0

是否因资源共享而失败?尝试使用像filemon这样的工具来观看。

+0

从进程监视器添加的信息 - 文件没有在其他地方使用,但似乎揭示了文件系统权限的问题 – 2011-04-26 16:48:46

+0

更改完全信任所有人的权限并确保错误继续发生。 – lsalamon 2011-04-26 17:44:10

+0

它已经完全信任 – 2011-04-26 18:03:58

1

感谢过程监视器,我意识到在我的c:\ temp \中设置了奇怪的权限,并强制传播给所有的孩子。这在奇怪的背景下造成了怪异感,比如这个。

我转移到另一个文件夹没有任何继承权限,清理权限,使网络服务完全访问,它似乎解决了。

+0

对于标准的IIS安装,Temporary ASP.NET Files文件夹对于32位和64位是不同的。我们更改了enable32BitAppOnWin64 = true并且修复方法是将访问设置从32位文件夹复制到64位,C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files' – rob 2017-10-26 10:32:21