DotNetOpenAuth 4.0.1を使用してOpenIdプロバイダー(Google)でユーザーを認証するASP.NETMVC4アプリがあります。私の開発マシン(localhost)ではすべて正常に動作します。
ただし、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に関してこれまで誰もこの質問をしたことがないのは奇妙に思われるので、何か間違ったことをしているのではないでしょうか。助けてください!