首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用MVC3的IIS7.5上的HTTP 500内部服务器错误

使用MVC3的IIS7.5上的HTTP 500内部服务器错误
EN

Server Fault用户
提问于 2012-09-14 13:51:30
回答 2查看 14.2K关注 0票数 2

我正试图在我们的生产服务器上安装一个MVC3应用程序,但没有成功。应用程序是从第三方(编译),所以调试是不可用的。此外,我强烈怀疑在站点中的任何代码有机会执行之前就会发生错误。

据我所知,我们的暂存服务器与生产服务器非常相似。它们都运行WindowsServer2008Standard R2,都运行SharePoint2010站点(尽管这个安装没有以任何方式接触到)。IIS7.5版,.NET Framework4.0( MVC应用程序所需)(最近)被安装(由我安装,之后重新启动)。该应用程序非常小,很简单,据我所知,它坚持使用相当标准的功能--包括表单身份验证(即。它不会耍任何肮脏的把戏)。

浏览器中显示的错误消息非常普遍:

代码语言:javascript
运行
复制
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记录的同一条消息)。

代码语言:javascript
运行
复制
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的错误(正如上面所指出的):

代码语言:javascript
运行
复制
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找不到一些文件。因此,一些问题是:

  1. AspNetInitClrHostFailureModule是什么?在站点IIS管理器中可配置的模块列表中,它没有列出。我在谷歌上搜索也没有成功。也许这是秘密。
  2. 我访问站点的根URL。这应该由FormsAuthenticationModule重定向到/Account/登录。那么为什么处理程序是StaticFile呢?这是线索吗?
  3. 我已经尝试删除臭名昭著的system.webserver/modules/runAllManagedModulesForAllRequests属性,这使得错误消失了(当然,MVC实际上不起作用)。如果需要的话,我准备手动指定所有必要的模块,但是如果AspNetInitClrHostFailureModule是实际需要的,我就会陷入困境。有没有人知道,或者有人能告诉我,一个典型的MVC3应用程序到底需要哪些模块?

这个问题很可能是这一个的重复,但他没有得到任何有用的答案,而且也问了一些不那么具体的问题。所以我自己去吧。

希望在这里有所帮助:)

编辑:我现在已经尝试在服务器上设置一个简单的MVC 3项目。我使用MVC应用程序模板创建了一个新项目,并将其编译并部署到服务器上。它的行为方式完全一样。服务器根本无法运行MVC 3项目。

EN

回答 2

Server Fault用户

回答已采纳

发布于 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文件夹的下列程序集之一:

代码语言:javascript
运行
复制
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下面的某个地方(全局程序集缓存)中。

请注意,如果供应商正在对其程序集签名,但它们是延迟签名的,也可能发生此问题。这也将在融合日志中显示出来。对这一症状的描述如下:

https://stackoverflow.com/questions/11030500/assembly-binding-error-bind-result-hr-0x80070002-the-system-cannot-find-the

延迟签署大会

http://msdn.microsoft.com/en-us/library/t07a3dye.aspx

票数 1
EN

Server Fault用户

发布于 2012-09-21 12:11:56

胡乱猜测:

由于它看起来像是一个失败的模块加载,您是否检查了链接到您的网站的应用程序池的参数是否设置为正确版本的.Net?DefaultAppPool是.net v2.0。MVC可能应该在“集成”"v4.0“应用程序池中(默认名称为ASP.NET v4.0)。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/427475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档