尝试将强名称 dll 包含到 2 级安全透明模型中
Posted
技术标签:
【中文标题】尝试将强名称 dll 包含到 2 级安全透明模型中【英文标题】:Trying to include Strong Name dll's to for level 2 security transparency model 【发布时间】:2013-09-06 04:16:58 【问题描述】:我的 4.0 MVC 应用程序将 PDF 视图呈现到屏幕上。这一切都适用于我的开发箱,但会从主机提供程序环境中产生安全违规。作为补偿,我在控制器上添加了 [AllowPartiallyTrustedCallers] 和 [SecurityCritical] 属性。只是现在,我的两个 nuget 包无法编译,因为它们不符合强名称。因此,当我尝试以下步骤使它们具有强命名时,我最终会遇到运行时错误。任何建议表示赞赏。
强名称 nuget dll 的步骤。
1) ldasm /all /out=Rotativa.il Rotativa.dll
2) sn -k Rotativa.snk
3) ilasm /dll /key=Rotativa.snk Rotativa.il
运行时错误: “尝试通过安全透明方法 'my_App.M vc Application.Application_Start()' 访问安全关键方法 'System.Web.Optimization.Bundle Table.get_Bundles()' 失败。\n\n 程序集 'my_App, Version=1.0 .0.0,Culture=neutral,PublicKeyToken=null'被标记为'Allow Partially Trusted Callers Attribute',并使用2级安全透明模型。2级透明导致'Allow Partially Trusted Callers Attribute'程序集中的所有方法成为安全默认透明,这可能是这个异常的原因。"
尝试通过安全透明方法'my_App. M v c Application.Application_Start()' 访问安全关键方法 'System.Web.Optimization.Bundle Table.get_Bundles()' 失败。
Assembly 'my_App, Version=1.0.0.0, Culture=neutral, Public Key Token=null' 标有“Allow Partially Trusted Callers Attribute”,并使用 2 级安全透明模型。 2 级透明度会导致“允许部分受信任的调用者”程序集中的所有方法默认变得安全透明,这可能是导致此异常的原因。
【问题讨论】:
【参考方案1】:您是否已经在您的程序集及其依赖项上执行了 .NET 安全注释器工具?它会指导您完成使其符合 2 级标准的步骤。
http://msdn.microsoft.com/en-us/library/dd997356.aspx
【讨论】:
以上是关于尝试将强名称 dll 包含到 2 级安全透明模型中的主要内容,如果未能解决你的问题,请参考以下文章
尝试通过安全透明方法“WebMatrix.WebData.PreApplicationStartCode.Start()”