OpenID не работает с DotNetOpenAuth после обновления до версии 4

Я только что обновил свою версию DotNetOpenAuth с 3.4.7.11121 до 4.0.0.12079-RC1, чтобы получить поддержку OAuth2. Проблема в том, что после обновления мои OpenID-запросы перестают работать. Последняя строка ниже создает исключение FileNotFoundException (сообщение = не удалось загрузить файл или сборку System.Web.Mvc, Version = 1.0.0.0, Culture = нейтральный, 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 ver 1.0, чтобы получить необходимую dll. После установки исключение не генерируется, вместо этого отображается белая страница с текстом «DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult» вместо перенаправления на провайдер службы OpenID. Я этого не понимаю ..

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


person user1248042    schedule 24.03.2012    source источник
comment
Не забудьте отметить приведенный ниже ответ как принятый, если он вам помог.   -  person Mathias Lykkegaard Lorenzen    schedule 01.07.2012


Ответы (1)


Да, я нашел решение. Просто добавьте несколько строк в 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>
person user1248042    schedule 25.03.2012