我有一个MVC 3.0应用程序,当部署时,每次运行某个页面时都会使应用程序池崩溃。
这个页面基本上没有对任何其他页面做任何不同的事情 获取数据库记录并使用视图显示信息。
我无法弄清楚为什么崩溃导致应用池关闭并关闭整个网站。 我已经安装了ELMAH日志跟踪并且已经包装了一个基本控制器,但是当应用程序池崩溃时,没有日志写入ELMAH
我尝试使用此方法捕获所有非托管异常 http://support.microsoft.com/kb/911816然而,应用程序池仍然崩溃,我没有找到解决方案。
没有代码是不受管理的,所以我不确定为什么会发生这种情况,除了对数据库的调用可能失败但在数据库日志中没有看到错误。 我正在使用DynamicMethod生成IL代码以映射到我的模型的数据库结构,但是相同的实现适用于所有其他模型,并且在我的开发机器上损坏的调用正常工作。
问题1 如果此IL生成的代码失败,是否仍会在标准请求错误处理中捕获异常?
事件日志很神秘,旁边没用。
Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error in the .NET Runtime at IP 000007FEFA352648 (000007FEFA350000) with exit code 80131506.
64位窗口的DebugDiag只允许我分析转储文件,我无法将其附加到应用程序池或IIS进程。
应用程序在VS2010的调试和发布模式下完美运行。
问题2 我正在开发32位但部署到64位。是否有任何情况下32位工作正常但在64位环境中失败?
问题3 我不确定我可以采取哪些其他日志记录或方法来解决此问题。 是否有任何其他日志记录或代码可以包含我的请求以尝试跟踪问题。
我很确定它必须是动态方法代码中的崩溃,所以如果有人可以回答Question1那么这将真的有帮助
答案 0 :(得分:1)
好问题是DynamicMethod生成IL代码失败。
如果字段类型和数据库类型不匹配,则会崩溃整个应用程序池
应该在开发服务器上找到任何类型不匹配但是 问题是int的数据库类型和Decimal的字段类型 没有在32位开发机器上中断但在64位部署服务器上崩溃。
生成IL代码到dll并运行PEVerify显示问题。
问题1.不,
问题2.在这种情况下是的
问题3. PEVerify,如果您要生成IL代码,请始终通过PEVerify运行它。
答案 1 :(得分:0)
你得到的错误是致命的CLR崩溃。
1)否
2)您需要构建适当的运行时。
3)如果不分享您在代码中执行的操作以及您使用的非托管资源的信息,则无法继续提供帮助。