2012-04-06 2 views
2

У меня есть приложение ASP.NET MVC4, которое использует DotNetOpenAuth 4.0.1 для аутентификации пользователей с помощью поставщика OpenId (Google). Все работает отлично на моей машине dev (localhost).DotNetOpenAuth «Правила безопасности наследования нарушены»

Однако при развертывании веб-приложения на сервер (виртуальный хостинг), я получаю следующее сообщение об ошибке при попытке аутентификации (в частности, когда я пытаюсь создать 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 или есть более простой способ?

Вопрос кажется похожим на this one, но я не знаю, какие части источника нуждаются в редактировании. Также кажется странным, что никто не задавал этот вопрос раньше в отношении DotNetOpenAuth, так что, возможно, я что-то делаю неправильно? Пожалуйста помоги!

ответ

0

Похоже, вы используете сборку DotNetOpenAuth, предназначенную для .NET 3.5. Мощным изменением, внесенным в .NET 4.0, было требование для разных атрибутов безопасности. Вы можете get the DotNetOpenAuth build that targets .NET 4.0 from NuGet.

+0

Спасибо за ваш ответ. У меня определенно есть сборка .NET 4 (ссылки говорят «Версия времени исполнения версии 4.0.30319»). И мое приложение ссылается на правильные DLL, потому что, когда я удаляю их, они запрашивают их. Любая идея, что еще может быть? – James

+0

Я отмечу это как ответ, хотя я не уверен, что происходит. В итоге я перешел на другого хостинг-провайдера, и он работает. – James

+0

У меня проблема с .net 4 тоже. Я также уверен, что использую .NET 4.0 один ... – Greg

Смежные вопросы

 Смежные вопросы