Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DotNetOpenAuth在修改后编译,但在运行示例项目时引发运行时异常_C#_Visual Studio 2012_Dotnetopenauth - Fatal编程技术网

C# DotNetOpenAuth在修改后编译,但在运行示例项目时引发运行时异常

C# DotNetOpenAuth在修改后编译,但在运行示例项目时引发运行时异常,c#,visual-studio-2012,dotnetopenauth,C#,Visual Studio 2012,Dotnetopenauth,我从GitHub下载了最新的DotNetOpenAuth代码,但最初它无法构建。我通过运行以下命令修复了该问题: sn -Vr *,2780ccd10d57b246 可在此处找到: 我继续对项目DotNetOpenAuth.AspNet进行了一些修改。一切都很好。然后,我在samples下创建了一个mvc4web项目来测试我的更改。解决方案再次编译。但是,只要单击“调试”,就会出现ASP.NET死亡黄屏,并出现以下错误: 无法加载文件或程序集“DotNetOpenAuth.AspNet”或其

我从GitHub下载了最新的DotNetOpenAuth代码,但最初它无法构建。我通过运行以下命令修复了该问题:

sn -Vr *,2780ccd10d57b246
可在此处找到:

我继续对项目DotNetOpenAuth.AspNet进行了一些修改。一切都很好。然后,我在samples下创建了一个mvc4web项目来测试我的更改。解决方案再次编译。但是,只要单击“调试”,就会出现ASP.NET死亡黄屏,并出现以下错误:

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

MVC4项目是从空模板创建的,因此没有对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>
sn-k mykeyfile.pfx
sn-i mykeyfile.pfx mykeycontainer
sn-p mykeyfile.pfx mykeyfile.pub
sn-q-t mykeyfile.pub
sn-Vr*,
并用新值修改了文件\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>
26。真的
27. $(ProjectRoot)src\official-build-key.pub
28. $(PublicKeyFile)
29DotNetOpenAuth
302780ccd10d57b246
31真的
32签名\

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

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

查看注册表项的值:
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,2780ccd10d57b246

把钥匙复制到

HKEY\U LOCAL\u 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?因为它仍然给出了一个错误。但是注册表的调整是有效的。