我的 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 vc Application.Application_Start()' 访问安全关键方法 'System.Web.Optimization.Bundle Table.get_Bundles()' 失败。
程序集 'my_App, Version=1.0.0.0, Culture=neutral, Public Key Token=null' 标有 'Allow Partially Trusted Callers Attribute',并使用 2 级安全透明模型。2 级透明度会导致“允许部分受信任的调用者”程序集中的所有方法默认变为安全透明,这可能是此异常的原因。