大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC应用程序中的“坏二进制签名”,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所有项目都设置为对任何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
道歉,如果这看起来有点模糊,因为我们还没有完全解决这个问题,还在研究它,虽然我们一定会在这里进行更新.
使我们相信这是一个实际损坏的dll的痕迹是,如果您查看ildasm.exe中的编译视图dll,并检查涉及lamda的实际方法调用,则会显示“[SIGNATURE ENDED PREMATURELY]”错误ILDASm.然而,RedGate的反射器在尝试扩展该方法时会崩溃.
IL_029f: call class [System.Core]System.Linq.Expressions.Expression`1<!!0> [System.Core]System.Linq.Expressions.Expression::Lambda<class [System.Core]System.Func`2<class [MyCode.Authentication.Admin.Mvc]MyCode.Authentication.Admin.Mvc.Dto.InternalUserDto,object>>(class [System.Core]System.Linq.Expressions.Expression,class [System.Core]System.Linq.Expressions.ParameterExpression[]) IL_02a4: call class [System.Web.Mvc]System.Web.Mvc.HtmlHelper [MyCode.Extensions]MyCode.Extensions.System.Web.Mvc.HtmlHelperInputExtensions::checkBox<[2]>(class [System.Core]System.Linq.Expressions.Expression`1<class [System.Core]System.Func`2<class [MyCode.Extensions]'type parameter'.T,object>> [SIGNATURE ENDED PREMATURELy])
我们注意到这只是一个64位的问题.我们即将调查此问题是否仍然发生在.Net 4.0上.当我们知道的时候,我会更新这里.
我们也正在看到这是否已被提出为Microsoft的错误.再次,当我们知道的时候,我会更新这里.
[编辑:现在已经到了问题的根本原因]
我以为我会回来更新这个答案.
对我们来说,事实证明,这不是一个编译器问题,而是aspnet_merge的一个问题.简而言之,在我们的64位版本的框中,我们使用了一个旧的,过时的aspnet_merge副本(意外的),这似乎正常工作,但是导致这些损坏的dll(完全按照你所描述的方式).路径已被更改,因此我们的Web部署项目正在使用这个错误的版本.
更新到aspnet_merge版本3.5或更高版本的路径,修复了问题.
我们认为这是一个64位的问题,原因是因为我们的编译框是我们编译的唯一64位环境(我们的所有开发工作站都是32位),唯一的问题就是这个问题.但是,“bit ness”是一个红色的鲱鱼!
希望这可以帮你解决你的问题.
以上是大佬教程为你收集整理的asp.net-mvc – ASP.NET MVC应用程序中的“坏二进制签名”全部内容,希望文章能够帮你解决asp.net-mvc – ASP.NET MVC应用程序中的“坏二进制签名”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。