应用程序池空闲关闭后,ASP.NET MVC应用程序无法启动

时间:2012-05-08 21:55:49

标签: asp.net-mvc-3 iis-7.5 application-pool applicationpoolidentity

我正在使用剃刀视图引擎开发一个面向Internet的ASP.NET MVC 3应用程序。该应用程序托管在Win 2K8 R2,SP1上的IIS7.5中,服务器端会话状态存储在同一服务器上的SQL 2012数据库中。会话状态在180分钟后设置为超时。

使用访问远程Web服务的自定义提供程序实现身份验证和成员身份。

该应用程序具有以集成模式运行的专用.NET 4应用程序池。当“Temporary ASP.NET Files”目录下的站点的子目录为空时,应用程序将正确启动:请求到默认页面的路由,表单身份验证启动并且用户被重定向到登录页面。

在应用程序池空闲关闭后,访问该站点失败,通常会出现403或404错误之一。到目前为止,我发现的唯一允许网站重新启动的操作是删除“临时ASP.NET文件”中的文件。

默认情况下,应用程序池在ApplicationPoolIdentity下运行:我尝试使用icacls授予应用程序池用户(使用appcmd找到)对网站根目录和临时文件夹的完全访问权限,但无济于事。我尝试将应用程序池更改为在LocalSystem,LocalService和NetworkService帐户下运行,并为这些帐户授予对这两个目录的完全访问权限。

我尝试修改system32 \ inetsrv \ config中的applicationHost.config,以便应用程序池始终运行,也无济于事。增加应用程序池上的空闲关闭会增加首次失败的时间。

在我的开发机器(运行Win 8& VS11的笔记本电脑,桌面运行win 7& VS2010)上出现相同的症状时,在IIS7(不表达)下:当它们出现在其中一台机器上时,application_start上的断点没有不会受到打击;在开发过程中,对任何.cshtml文件的更改都可能导致失败。

使用进程监视器我可以看到,当请求失败时,没有尝试访问Web根目录中的任何有效文件,尝试访问默认的可能默认文档列表失败。

使用进程资源管理器,似乎没有任何类型的锁定临时文件。

任何人都可以提供解决方案或指向解决方案的指针吗?

提前致谢, 保罗。

1 个答案:

答案 0 :(得分:0)

我会运行Fiddler并在失败时查看完整的响应(404):它可以给你一个想法。请看这个链接:http://forums.asp.net/t/1711550.aspx/1