【问题标题】:How to Disable Strong Name Verification for All .Net assembly?如何禁用所有 .Net 程序集的强名称验证?
【发布时间】:2014-03-12 21:31:40
【问题描述】:

如何通过配置 .net 框架或 IIS 或项目的配置来禁用系统中所有 .Net 程序集的 .Net 强名称验证?

(点击查看大图)

【问题讨论】:

标签: .net config verification strongname


【解决方案1】:

尝试将其添加到 regestry

操作系统 x32:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,af24b530b87e22f1]

操作系统 x64:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,af24b530b87e22f1]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,af24b530b87e22f1]

并将其添加到您的 Web.config

<system.web>
   <hostingEnvironment shadowCopyBinAssemblies="false" />
</system.web>

【讨论】:

  • Web.config 更改是我尝试过的其他答案错过的重要一步——感谢您提出来。
【解决方案2】:

要对您机器上的所有程序集禁用强名称验证,您可以运行:

sn.exe -Vr *

来自 VS201* 的开发人员命令提示符

【讨论】:

  • 确保您使用的是正确版本(64 位或 32 位)的 sn.exe。如果您的程序集是 64 位并且您使用 32 位 sn.exe 禁用强名称验证 (sn.exe -Vr *),则它不起作用。您只需要使用 64 位 sn.exe 即可工作。
  • 为了避免混淆 32 位和 64 位 sn.exe,禁用强名称验证的最佳方法是直接修改注册表,添加以下 2 个条目。这使您的程序集适用于 32 位和 64 位。 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification*,] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification*,]
【解决方案3】:

这是我收到的一个例外:

Error Type: System.IO.FileLoadException
Error Message: Could not load file or assembly 'MyAssemblyName, Version=5.1.0.0,  Culture=neutral, PublicKeyToken=30b439e30eee46b4' or one of its dependencies.
Strong name  validation failed. (Exception from HRESULT: 0x8013141A)

这是一个解决方案,我可以在完全签名的服务中对其进行测试时禁用特定程序集的强名称验证:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\MyAssemblyName,30b439e30eee46b4]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\MyAssemblyName,30b439e30eee46b4]

您必须在注册表中创建这些新键,键下没有值。您可以将这两行复制到 .reg 文件中,更改程序集名称及其 guid 并双击它以合并到注册表中。

注意:程序集名称是不带 .dll 扩展名的文件名,与异常中显示的完全相同。

然后重新启动您的应用/服务。

我认为上面用 * 而不是程序集名称的答案也应该有效。

【讨论】:

    【解决方案4】:

    以下条目将起作用:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,af24b530b87e22f1]
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,af24b530b87e22f1]
    

    【讨论】:

    • 在提及注册表项时,请明确说明需要做什么。删除它们?添加它们?改变它们?
    • 您想将这些键添加到注册表中。最简单的方法是运行 powershell 命令:reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification*,af24b530b87e22f1"
    • 那不是 PowerShell ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2018-01-27
    相关资源
    最近更新 更多