我有一个 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 提出过这个问题,所以也许我做错了什么?请帮忙!