我正在尝试构建 4.3.0 版本。但我收到了已知错误:
无法加载文件或程序集“DotNetOpenAuth.Core”或其依赖项之一。无法验证强名称签名。程序集可能已被篡改,或者它被延迟签名但未使用正确的私钥完全签名。 (HRESULT 异常:0x80131045)
我尝试了几种选择,但没有成功。
问题是我必须与 OpenId 提供商关联,他们告诉我除非我更改 protected string GetSignature
方法,否则它不会工作。
行:
MessageDictionary dictionary = this.Channel.MessageDescriptions.GetAccessor(signedMessage);
根据他们必须更改为:
MessageDictionary dictionary = this.Channel.MessageDescriptions.GetAccessor(signedMessage, true);
在此question有人建议,可以解释如何编译它。还有人可以这样做吗?无数的谷歌搜索都没有让我找到解决方案。
谁能帮我解决这个问题?我知道 OpenId 2.0 现在已经过时,但提供商不会很快切换到 Open Connect。
最佳答案
以上评论没有让我有任何进一步的了解。
经过更多尝试后,我发现由于 key 中缺少私有(private)部分,因此无法进行签名(duh)。
所以我决定通过将所有 csproj 文件中的以下 true 值替换为 false 来简单地删除签名。在 notepad++ 中批量替换比在 visual studio 中的所有项目中手动替换更快。
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<DelaySign>true</DelaySign>
</PropertyGroup>
以上属性在项目节点下。
删除后我可以编译和分发。
如果您想通过 Visual Studio IDE 完成此操作,请右键单击您的项目,然后选择“属性”并转到“签名”选项卡。轮到签名了。
关于c# - 编译特定版本的 DotNetOpenAuth 并进行小改动,签名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38351473/