我正试图在我们的生产服务器上安装一个MVC3应用程序,但没有成功。应用程序是从第三方(编译),所以调试是不可用的。此外,我强烈怀疑在站点中的任何代码有机会执行之前就会发生错误。
据我所知,我们的暂存服务器与生产服务器非常相似。它们都运行WindowsServer2008Standard R2,都运行SharePoint2010站点(尽管这个安装没有以任何方式接触到)。IIS7.5版,.NET Framework4.0( MVC应用程序所需)(最近)被安装(由我安装,之后重新启动)。该应用程序非常小,很简单,据我所知,它坚持使用相当标准的功能--包括表单身份验证(即。它不会耍任何肮脏的把戏)。
浏览器中显示的错误消息非常普遍:
HTTP Error 500.0 - Internal Server Error
An error message detailing the cause of this specific request failure
can be found in the application event log of the web server. Please review
this log entry to discover what caused this error to occur.
关于“在应用程序事件日志中详细说明原因的错误信息”的部分似乎只是猜测--一个虔诚的希望,即无论什么代码实际导致的错误都会记录它。在事件日志中找不到有用的信息(只有IIS记录的同一条消息)。
Module: AspNetInitClrHostFailureModule
Notification: BeginRequest
Handler: StaticFile
Error Code: 0x80070002
Requested URL: http://xxxxxx.xxxxxx.xx:80/
Physical Path: C:\Xxxxxxx\Prod\WebClient
Logon Method: Not yet determined
Logon User: Not yet determined
使用失败的请求跟踪,我能够跟踪到AspNetInitClrHostFailureModule的错误(正如上面所指出的):
103. -NOTIFY_MODULE_START
ModuleName AspNetInitClrHostFailureModule
Notification 1
fIsPostNotification false
Notification BEGIN_REQUEST
104. -SET_RESPONSE_ERROR_DESCRIPTION
ErrorDescription An error message detailing the cause of this specific
request failure can be found in the application event log of the web server.
Please review this log entry to discover what caused this error to occur.
105. -MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName AspNetInitClrHostFailureModule
Notification 1
HttpStatus 500
HttpReason Internal Server Error
HttpSubStatus 0
ErrorCode 2147942402
ConfigExceptionInfo
Notification BEGIN_REQUEST
ErrorCode The system cannot find the file specified. (0x80070002)
所以你就有了。表面上看,AspNetInitClrHostFailureModule找不到一些文件。因此,一些问题是:
这个问题很可能是这一个的重复,但他没有得到任何有用的答案,而且也问了一些不那么具体的问题。所以我自己去吧。
希望在这里有所帮助:)
编辑:我现在已经尝试在服务器上设置一个简单的MVC 3项目。我使用MVC应用程序模板创建了一个新项目,并将其编译并部署到服务器上。它的行为方式完全一样。服务器根本无法运行MVC 3项目。
发布于 2012-09-23 19:48:18
我会卸载和重新安装ASP.NET。我在安装.NET框架之后出现了一些问题,现在我几乎经常这样做。
卸载:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ua
要重新安装:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
如果需要运行32位应用程序,还需要在C:\Windows\Microsoft.NET\Framework\v4.0.30319文件夹中运行aspnet_regiis。请注意,如果有任何运行,执行重新安装将影响其他ASP.NET web应用程序。
由于问题发生得太早,启用.NET框架融合日志可能很有用。这是为了提供有关加载程序集期间发生的事情的详细信息。
如果所有程序集都已加载,我将使用Process获取跟踪。这可能会为你指出它在失败时所做的事情的正确方向。
http://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx
如果出现缺少程序集的问题,则可以通过检查清单来确定应用程序需要哪些程序集。这可以用ildasm.exe (IL反汇编程序)或ILSpy来完成。
我见过许多MVC应用程序在启动时崩溃,在新服务器上引入了毫无意义的错误消息,因为在开发或测试中存在程序集(dll),而在新服务器上却没有。如果是这样,则可能是需要复制到网站bin文件夹的下列程序集之一:
Microsoft.Web.Infrastructure.dll
System.Net.Http.dll
System.Net.Http.Formatting.dll
System.Net.Http.WebRequest.dll
System.Web.Extensions.dll
System.Web.Helpers.dll
System.Web.Http.dll
System.Web.Http.SelfHost.dll
System.Web.Http.WebHost.dll
System.Web.Mvc.dll
System.Web.Optimization.dll
System.Web.Providers.dll
System.Web.Razor.dll
System.Web.WebPages.Deployment.dll
System.Web.WebPages.dll
System.Web.WebPages.Razor.dll
当您安装ASP.NET MVC msi时,它通常会将其中的许多文件复制到C:\Program x86中的一个文件夹中,或者在C:\Windows\winsxs下面的某个地方(全局程序集缓存)中。
请注意,如果供应商正在对其程序集签名,但它们是延迟签名的,也可能发生此问题。这也将在融合日志中显示出来。对这一症状的描述如下:
延迟签署大会
发布于 2012-09-21 12:11:56
胡乱猜测:
由于它看起来像是一个失败的模块加载,您是否检查了链接到您的网站的应用程序池的参数是否设置为正确版本的.Net?DefaultAppPool是.net v2.0。MVC可能应该在“集成”"v4.0“应用程序池中(默认名称为ASP.NET v4.0)。
https://serverfault.com/questions/427475
复制相似问题