OpenID не работает с DotNetOpenAuth после обновления до версии 4 - PullRequest
2 голосов
/ 24 марта 2012

Я только что обновил свою версию DotNetOpenAuth с 3.4.7.11121 до 4.0.0.12079-RC1, чтобы получить поддержку OAuth2. Проблема в том, что после обновления мои OpenID-запросы больше не работают. Последняя строка ниже генерирует исключение FileNotFoundException (Сообщение = Не удалось загрузить файл или сборку 'System.Web.Mvc, Версия = 1.0.0.0, Культура = нейтральный, PublicKeyToken = 31bf3856ad364e35' или одна из его зависимостей.)

OpenIdRelyingParty openid = new OpenIdRelyingParty()
var request = openid.CreateRequest(requestedIdentifier, Realm.AutoDetect, returnUrl);
return request.RedirectingResponse.AsActionResult();

Я не могу понять, почему он ищет этот файл. Я использую библиотеку DotNetOpenAuth в приложении MVC3, и поэтому в проекте существует 3.0-версия System.Web.Mvc-файла.

Кто-нибудь, кто имеет какие-либо идеи, что я могу сделать, чтобы это работало?


Обновлено: стабильная версия 4.0.0.12084 была выпущена через несколько часов после того, как я опубликовал этот вопрос. Установили это вместо RC, но это не имеет никакого значения. Я попытался установить MVC версии 1.0, чтобы получить необходимую DLL. После установки исключение не выдается, вместо этого вместо перенаправления на сервис-провайдера OpenID-сервиса отображается белая страница с текстом «DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult». Я не понимаю этого ..

// Пер Андерссон

1 Ответ

2 голосов
/ 25 марта 2012

Да, я нашел решение.Просто добавьте несколько строк в web.config

<runtime>
    <legacyHMACWarning enabled="0" />

    <!-- When targeting ASP.NET MVC 3, this assemblyBinding makes MVC 1 and 2 references relink
         to MVC 3 so libraries such as DotNetOpenAuth that compile against MVC 1 will work with it. -->
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>
...