Asp.net mvc ActionResult使用ToString()重定向呈现

Asp.net mvc ActionResult使用ToString()重定向呈现,asp.net-mvc,dotnetopenauth,actionresult,Asp.net Mvc,Dotnetopenauth,Actionresult,使用以下示例: 下面一行 返回请求RedirectingResponse.AsActionResult() 呈现字符串“DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult”。 这是在发布的行中作为ActionResult返回的类。有人知道为什么我将类名作为字符串而不是实际的重定向吗 提前通知 您的Bin目录和web服务器中是否有多个版本的MVC?我突然想到,如果你有多个MVC类型的程序集(不同版本),比如ActionResult,加载

使用以下示例:

下面一行

返回请求RedirectingResponse.AsActionResult()

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


提前通知

您的Bin目录和web服务器中是否有多个版本的MVC?我突然想到,如果你有多个MVC类型的程序集(不同版本),比如
ActionResult
,加载到你的AppDomain中,
AsActionResult
方法返回一个版本,而你的MVCWeb应用程序使用了不同的版本,那么它可能只是用
ToString
来摆脱。您正在运行哪个版本的ASP.NET MVC?DotNetOpenAuth的
AsActionResult
方法是根据MVC框架的1.0 RTM版本编译的。如果您使用的是ASP.NETMVC2(包含在.NET4.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>

另一个解决方案,为我使用.Net 3.5和MVC 2

而不是

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


函数中的返回类型是什么?ActionResult。。。请查看url中的示例。。。函数是[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get),ValidateInput(false)]public ActionResult OpenIdLogOn(string returnUrl){…}在我看来,链接中提供的代码示例没有问题,DotNetOpenAuth库也没有问题。我已经检查了几次代码,没有太多可能出错的代码。我认为错误在路由或web.config中的某个地方。。。问题是具体在哪里。事实可能就是这样!我会尽快试一试!我已经更改了对MVC2的引用。最初,我收到一个异常,说签名无效,所以我删除了它。我现在得到以下错误(看起来比上一个结果好得多):在ContractHelper.TriggerFailureImplementation(ContractFailureKind kind,String displayMessage,String userMessage,String conditionText,Exception innerException)中使用ContractHelper.TriggerFailure时必须使用重写器(ContractFailureKind种类、String displayMessage、String userMessage、String conditionText、Exception innerException)…此错误是由于以下原因造成的:因此,基本上,DotNetOpenAuth不能以MVC 2为目标?因此,您以MVC 2为目标。MVC 1应该自动重新定位到MVC 2。但是任何MVC 1程序集的存在都可能会打破这一点。您能否确保网站的Bin文件夹中没有任何MVC 1程序集?DNOA可以以MVC为目标2没问题。但是在构建DNOA时必须安装代码契约——否则您将无法获得构建中断,但运行时将无法工作,这不是MVC2,而是代码契约必须在生成的程序集上运行ccrewrite。
var authRequest = relyingParty.CreateRequest(....);
....
authRequest.RedirectToProvider();
Response.End();
return new EmptyResult();