0

我正在开发使用剃须刀视图引擎的ASP.NET MVC 3面向互联网的应用程序。该应用程序位于Win 2K8 R2 SP1上的IIS7.5中,服务器端会话状态存储在同一台服务器上的SQL 2012数据库中。会话状态在180分钟后设置为超时。应用程序池空闲关闭后,ASP.NET MVC应用程序无法启动

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

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

应用程序池空闲关闭后,访问站点失败,通常是403或404错误之一。我迄今发现的唯一允许网站重新开始的操作是删除“Temporary ASP.NET Files”中的文件。

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

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

同样的症状发生在我的开发机器IIS7(不表达)下时(笔记本运行Windows 8 & VS11,桌面运行Windows 7 & VS2010):当它发生在这些机器中的一个,在的Application_Start断点没有按”不受打击;在开发过程中,更改任何.cshtml文件都可能导致失败。

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

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

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

在此先感谢, 保罗。

回答

0

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

+0

谢谢,我只是调查了一些我原来的帖子后偶然发现的东西:我使用IoC和程序集发现来建立路由表 - 它看起来可能没有这样一个好主意:[在IIS上的ASP.NET MVC 3给出403后一段时间,需要重新启动应用程序池](http://stackoverflow.com/questions/6204123/asp-net-mvc-3-on-iis-给-403-后期初的时间,要求,应用程序池重启)。 –

相关问题