使用ToString()的ActionResult重定向渲染

时间:2009-12-21 22:48:45

标签: asp.net-mvc dotnetopenauth actionresult

使用以下示例:http://www.west-wind.com/Weblog/posts/899303.aspx

以下一行......

return req.RedirectingResponse.AsActionResult();

呈现字符串“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”。 这是作为已发布的行中的ActionResult返回的类。有谁知道为什么我把类名称作为字符串而不是实际的重定向?

Thnx提前!

2 个答案:

答案 0 :(得分:4)

您的Bin目录和Web服务器中是否有多个版本的MVC?令我感到震惊的是,如果您有多个程序集(不同版本)的MVC类型(如ActionResult加载到您的AppDomain中,并且AsActionResult方法返回了一个版本而您的MVC Web应用程序使用了不同的版本,那么它可能只是用ToString来拯救。您运行的是什么版本的ASP.NET MVC? DotNetOpenAuth的AsActionResult方法是针对MVC框架的1.0 RTM版本编译的。如果您使用的是ASP.NET MVC 2(包含在.NET 4.0中),我可能会发现这可能是一个问题。

我相信如果您将此片段添加到MVC 2的web.config文件中,它将允许您使用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 :(得分:1)

另一种解决方案,使用.Net 3.5和MVC 2为我工作。

而不是

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

使用

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