【问题标题】:DotNetOpenAuth compiles after modifications but throws runtime exception when running sample projectDotNetOpenAuth 在修改后编译但在运行示例项目时抛出运行时异常
【发布时间】:2012-10-25 02:22:17
【问题描述】:

我从 GitHub 下载了最新的 DotNetOpenAuth 代码,但最初构建失败。我通过运行以下命令解决了这个问题:

sn -Vr *,2780ccd10d57b246

在这里找到:

http://www.dotnetopenauth.net/developers/contributing/quickstart-environment/

我继续对 DotNetOpenAuth.AspNet 项目进行了一些修改。它编译得很好。然后我在示例下创建了一个 MVC 4 Web 项目来测试我的更改。解决方案再次编译。但是,一旦我单击调试,我就会得到 ASP.NET 黄屏死机,并出现以下错误:

无法加载文件或程序集“DotNetOpenAuth.AspNet”或其依赖项之一。无法验证强名称签名。程序集可能已被篡改,或者它被延迟签名但未使用正确的私钥完全签名。 (HRESULT 异常:0x80131045)

MVC 4 项目是从空模板创建的,因此没有对 Microsoft.Web.WebPages.OAuth 的引用

我错过了什么?我完成了上面链接中的其余步骤:

sn -k mykeyfile.pfx 
sn -i mykeyfile.pfx mykeycontainer
sn -p mykeyfile.pfx mykeyfile.pub 
sn -q -t mykeyfile.pub
sn -Vr *,<YourPublicKeyTokenHere>

还修改了文件 \tools\DotNetOpenAuth.props,特别是行:27,29,30 的新值

26. <SignAssembly>true</SignAssembly>
27. <PublicKeyFile Condition="'$(PublicKeyFile)' == ''">$(ProjectRoot)src\official-build-key.pub</PublicKeyFile>
28. <AssemblyOriginatorKeyFile Condition="'$(AssemblyOriginatorKeyFile)' == ''">$(PublicKeyFile)</AssemblyOriginatorKeyFile>
29. <KeyPairContainer Condition="'$(KeyPairContainer)' == ''">DotNetOpenAuth</KeyPairContainer>
30. <PublicKeyToken>2780ccd10d57b246</PublicKeyToken>
31. <DelaySign>true</DelaySign>
32. <SignedSubPath>signed\</SignedSubPath>

【问题讨论】:

    标签: c# visual-studio-2012 dotnetopenauth


    【解决方案1】:

    不需要修改 props 文件。 问题可能在于您使用的是 64 位计算机,而您运行的 sn 命令仅影响 32 位注册表。然后在运行时失败,因为您在 64 位注册表上运行网站,其中没有跳过验证条目。

    执行此操作的“正确”方法是安装 64 位 Windows SDK,以便您获得 64 位 sn.exe 并运行该命令。但是,这是一种快速简便的方法:

    查看您的 reg 密钥的值:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,2780ccd10d57b246

    并将该密钥复制到

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,2780ccd10d57b246

    然后重新启动所有相关进程(MSBuild.exe、devenv.exe、iis、WebDAV 或任何托管您的网站并报告错误的进程)。它应该开始为你工作了。

    【讨论】:

    • 我遇到了相反的情况:sn.exe 将密钥添加到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\,但 IIS7 受到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\ 的影响。感谢您的回答!
    • VS2015 使用的是 x86 还是 x64 sn.exe?因为它仍然给出了错误。但注册表调整有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2019-08-20
    • 1970-01-01
    相关资源
    最近更新 更多