Jos*_*son 14 asp.net asp.net-mvc app-offline.htm
我为64位IIS7/Win2008上运行的ASP.NET MVC2应用程序创建了一个app_offline.htm文件,并确保它超过512字节(现在是2KB).在我运行Visual Studio 2010的开发盒上,它就像一个魅力,但当我把它放在生产盒上时,我得到的只是通用的HTTP 500错误,说"由于发生内部服务器错误,页面无法显示".
特别奇怪的是,我没有在应用程序事件日志中记录任何内容,ELMAH也没有选择任何内容.我已经禁用了自定义错误,为文件放置了FormsAuthentication位置异常,确保我没有引用任何其他文件(图像等),但没有任何修复它.
我已经阅读了关于SO和谷歌搜索的每个帖子几个小时,无法弄清楚这一点.什么想法可能是错的?我把头发拉到这里......
ric*_*ott 12
更新:
你在web.config中有这个吗?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpRuntime waitChangeNotification="300" maxWaitChangeNotification="300"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但还有一个问题.
ASP.NET将在web.config更改后立即卸载应用程序,但实际上不会重新加载它并应用"waitChange ..."设置直到发出请求.因此,您仍然可以删除app_offline.htm和web.config,如果在dll仅复制一半时发生第一次请求,则会发生异常.要添加侮辱伤害,异常将持续到您更换临时web.config或"waitChange ..."时间的总持续时间到期为止!
要绕过这个最后的障碍,您需要在上传临时web.config之后,但在开始部署应用程序文件之前向应用程序发出请求.整个过程如下:
- 添加app_offline.htm
- 用临时web.config替换应用程序的web.config(如上所述)
- 请求站点上的任何ASP.NET资源,以便新的waitChangeNotification被"应用"*
- 进行必要的文件系统更改(部署bin dlls,其他站点文件)
- 将临时web.config替换为原始应用程序web.config
- 删除app_offline.htm
*您可能会对步骤2-3中发生的情况提出异议,因为ASP.NET在步骤1之后关闭了应用程序.实际上,我的事件查看器中没有出现web.config更改已注册或"应用"的结果步骤2或3,但仍然在步骤3之后应用更新的waitChangeNotification设置.
| 归档时间: |
|
| 查看次数: |
2594 次 |
| 最近记录: |