在IIS7下运行的MVC 2应用程序无法解决“UnauthorizedAccessException”

时间:2010-03-27 01:19:10

标签: asp.net-mvc iis-7

我们使用在我们的应用程序中访问System.File.IO的MVC控制器,它们在localhost(基于IIS 6.0的Cassini)中运行良好。部署到IIS7,我们在使控制器工作时遇到问题,因为它们会抛出UnauthorizedAccessExceptions。

我们已尝试解决此问题: - 设置NETWORK SERVICE和IUSR帐户以获得有关文件和文件夹的权限 - 确保应用程序池在NETWORK SERVICE下运行并加载用户配置文件 - 应用程序在完全信任下运行 - 我们尝试将模拟添加到web.config并赋予NETWORK SERVICE写权限(这不是一个好主意,因为这不是我们想要做的)

现在,我们在获取UnauthorizedAccessException和IIS7 404页面之间交替,该页面建议完全忽略路由(例如,当物理文件实际位于/ content / images / favicon时,我们通过控制器提供“/favicon.ico” .ICO)。我们使用ProcessMonitor来尝试追踪问题,但没有成功。

更新:

此问题是间歇性。我们有一个简短的几分钟,一切都工作,没有进行任何配置更改。我们在EC2上运行,因此这可能与分布式文件系统有关。我们还使用单独的驱动器来存储所有网站数据,我们没有使用inetpub / wwwroot。

更新2:

该站点在IIS 7.5下无故障运行,无需更改配置,但这可能是由于使用新的AppPoolIdentity运行。否则它是一个相同的部署。不幸的是,我们无法在此EC2实例上运行R2。

2 个答案:

答案 0 :(得分:1)

确定原因的方法之一是使用Sysinternals的Procmon工具

Procmon将显示无法打开文件的原因,它还会显示谁持有该文件。

答案 1 :(得分:0)

问题原来是我们使用的控制器工厂没有正确处理文件请求。