c# - 编译特定版本的 DotNetOpenAuth 并进行小改动,签名问题

标签 c# .net dotnetopenauth

我正在尝试构建 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/

相关文章:

.net - jquery 对话框干扰 .net 输入复选框选中属性 - 始终为 false

c# - 如何创建即使在更新后也具有 100% 可用性的 WCF 服务?

c# - Windows 7 中菜单选项卡上的下拉按钮

c# - Twitter API & DotNetOpenAuth & HttpClient : Error "Could not authenticate you"

c# - 在 asp.net 中集成 OpenID 时出错

c# - 通过操作轻松假装 - 说它找不到电话但显示在列表中

c# - SocketAsyncEventArgs 示例 : How to make the sample works? 中缺少 AsyncUserToken 类

facebook - DotNetOpenAuth 声称来自 Facebook 的标识符永远不会相同

c# - 从代码后面引用 jquery 库

c# - 在 WPF 应用程序上显示 ClickOnce 部署版本