ActionResult перенаправляет рендеринг с использованием ToString () - PullRequest
3 голосов
/ 22 декабря 2009

Используя следующий пример: http://www.west -wind.com / Weblog / posts / 899303.aspx

Следующая строка ...

return req.RedirectingResponse.AsActionResult();

отображает строку "DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult". Этот класс возвращается как ActionResult в строке после публикации. Кто-нибудь знает, почему я получаю имя класса в виде строки вместо фактического перенаправления?

Спасибо заранее!

Ответы [ 2 ]

4 голосов
/ 22 декабря 2009

Может быть, у вас есть несколько версий MVC в каталоге Bin и на вашем веб-сервере? Мне кажется, что если в ваш AppDomain загружено несколько сборок (разных версий) типов MVC, таких как ActionResult, а метод AsActionResult возвратил одну версию, а ваше веб-приложение MVC использовало другую версию, то это может привести к отказу с ToString. Какую версию ASP.NET MVC вы используете? Метод DotNetOpenAuth AsActionResult был скомпилирован для версии 1.0 RTM фреймворка MVC. Если вы используете ASP.NET MVC 2 (входит в состав .NET 4.0), возможно, это проблема.

Я полагаю, что если вы добавите этот фрагмент в файл web.config вашего MVC 2, он позволит вам использовать официальную сборку DotNetOpenAuth, поэтому вам не придется создавать свою собственную:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>
1 голос
/ 12 января 2012

Другое решение, работающее для меня с .Net 3.5 и MVC 2.

Вместо

var authRequest = relyingParty.CreateRequest(....);
....
return authRequest.RedirectingResponse.AsActionResult();

использование

var authRequest = relyingParty.CreateRequest(....);
....
authRequest.RedirectToProvider();
Response.End();
return new EmptyResult();
...