【发布时间】:2010-01-20 13:14:30
【问题描述】:
当将 ASP.NET MVC 应用程序部署到 64 位 Windows 2008 服务器盒时,我们在某些页面上遇到上述错误。它在我们的开发机器上运行良好,尽管这些是 32 位 XP。只是想知道是否有人以前遇到过这种情况,有什么建议吗?详情如下:
错误的二进制签名。 (HRESULT 异常:0x80131192)
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Runtime.InteropServices.COMException:二进制签名错误。 (HRESULT 异常:0x80131192)
所有项目都设置为针对任何 CPU 编译,并在发布模式下编译。 ASP.NET 站点是预编译的,预编译的构建是在 64 位 Windows 2008 TeamCity 构建代理上。提前致谢。
编辑
我们仍然对此感到困扰。我已经使用 corflags.exe 查看了网站 bin 目录中的所有二进制文件。没有设置 32BIT 标志,除 Antlr3.Runtime.dll 的值为 1 外,所有的 CorFlags 值为 9。该问题仅影响某些页面,并且似乎是使用 FluentValidation 的页面(包括 FluentValidation.Mvc和 FluentValidation.xValIntegration 程序集)。使用 corflags.exe 检查时,这些都没有显示任何异常,并且 ildasm 没有显示奇怪的依赖关系。
在本地构建(32 位 Windows XP)时,该站点可以正常部署和运行。在构建代理(64 位 Windows 2008 Server)上构建时,站点会显示这些错误。该站点以集成管道模式运行,并且未设置为 32 位。
堆栈跟踪是:
[COMException (0x80131192): Bad binary signature. (Exception from HRESULT: 0x80131192)]
ASP.views_user_newinternal_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer) in e:\TeamCity\buildAgent\work\605ee6b4a5d1dd36\...Admin.Mvc\Views\User\NewInternal.aspx:53
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +115
ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in e:\TeamCity\buildAgent\work\605ee6b4a5d1dd36\...Admin.Mvc\Views\Shared\Site.Master:26
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +115
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +240
System.Web.UI.Page.Render(HtmlTextWriter writer) +38
System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) +94
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4240
【问题讨论】:
-
这引出了一个明显的问题,你看过asp.net创建的临时文件的第53行了吗?
-
它是
using (Html.BeginForm("CreateNewInternal", "User"))块的右大括号,其中包括验证摘要。手指缓慢但肯定地指向与 FluentValidation/xVal 或我认为介于两者之间的某事有关。
标签: asp.net-mvc interop 64-bit