2

我有一个 ASP.NET MVC4 应用程序,它使用DotNetOpenAuth 4.0.1通过 OpenId 提供程序 (Google) 对用户进行身份验证。在我的开发机器(本地主机)上一切正常。

但是,当我将 Web 应用程序部署到服务器(共享主机)时,我在尝试进行身份验证时收到以下错误(特别是,当我尝试创建一个OpenIdRelyingParty.

覆盖成员时违反了继承安全规则:“DotNetOpenAuth.Messaging.ProtocolException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)”。重写方法的安全可访问性必须与被重写方法的安全可访问性相匹配。

堆栈跟踪:

DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol(Boolean condition, String message, Object[] args) +0
DotNetOpenAuth.Messaging.Channel.ValidateAndPrepareBindingElements(IEnumerable`1 elements) +524
DotNetOpenAuth.Messaging.Channel..ctor(IMessageFactory messageTypeProvider, IChannelBindingElement[] bindingElements) +316
DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel..ctor(IMessageFactory messageTypeProvider, IChannelBindingElement[] bindingElements) +48
DotNetOpenAuth.OpenId.ChannelElements.OpenIdRelyingPartyChannel..ctor(ICryptoKeyStore cryptoKeyStore, INonceStore nonceStore, RelyingPartySecuritySettings securitySettings) +52
DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty..ctor(ICryptoKeyStore cryptoKeyStore, INonceStore nonceStore) +570
DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty..ctor() +65
MyProject.Controllers.OpenIdController.Authenticate(String returnUrl) in OpenIdController.cs:81
...

我听说 DotNetOpenAuth 在中等信任下工作得很好,所以我很惊讶地发现了一个错误。我该如何解决?我需要修改 DotNetOpenAuth 源代码还是有更简单的方法?

这个问题似乎与这个问题相似,但我不知道源代码的哪些部分需要编辑。同样奇怪的是,之前没有人就 DotNetOpenAuth 提出过这个问题,所以也许我做错了什么?请帮忙!

4

1 回答 1

0

看起来您正在运行针对 .NET 3.5 的 DotNetOpenAuth 构建。.NET 4.0 引入的一个重大变化是对不同安全属性的要求。您可以从 NuGet 获取针对 .NET 4.0 的 DotNetOpenAuth 构建

于 2012-04-06T18:36:50.390 回答