Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MVC ActionResult RedirectResult?/它只返回302,不重定向_C#_Asp.net_Asp.net Mvc 3_Iis 7_Actionresult - Fatal编程技术网

C# 如何使用MVC ActionResult RedirectResult?/它只返回302,不重定向

C# 如何使用MVC ActionResult RedirectResult?/它只返回302,不重定向,c#,asp.net,asp.net-mvc-3,iis-7,actionresult,C#,Asp.net,Asp.net Mvc 3,Iis 7,Actionresult,我试图从MVCAPI返回一个ActionResult,如果您在post正文中给它一个重定向uri,它应该重定向该uri。现在,如果您不给它一个uri,它的性能很好。但是如果你给它一个uri,它应该重定向到那个uri,它只返回一个302,并且不会在任何地方导航 现在我想我遇到的一个问题是,响应头中返回的位置是MVC的基本URI,然后是输入URI。我的一个问题是,我找到的所有关于这个的文档都很糟糕 所以我的问题是如何使用RedirectResult操作来实际重定向到不同的URI?我还可以重定向到当前

我试图从MVCAPI返回一个ActionResult,如果您在post正文中给它一个重定向uri,它应该重定向该uri。现在,如果您不给它一个uri,它的性能很好。但是如果你给它一个uri,它应该重定向到那个uri,它只返回一个302,并且不会在任何地方导航

现在我想我遇到的一个问题是,响应头中返回的位置是MVC的基本URI,然后是输入URI。我的一个问题是,我找到的所有关于这个的文档都很糟糕

所以我的问题是如何使用RedirectResult操作来实际重定向到不同的URI?我还可以重定向到当前域之外的URI吗?我担心我做不到,因为它正在将基URI附加到响应中的位置。它不会强制客户端浏览器导航到另一个URI

这是我的行动结果

    [AllowAnonymous]
    public ActionResult Dispatch(Dto.GoogleAnalyticsEvent evt)
    {
        log.DebugFormat("Dispatch()");
        if (evt.Redirect != null)
        {
            return new RedirectResult(evt.Redirect, false);
        }
        else
        {
            return Dispatch<Dto.GoogleAnalyticsEvent>(evt, _api.DispatchAnalyticsEvent, true);
        }
    }
提前谢谢你的帮助


我只是想澄清一下,我正在寻找API的响应,以迫使浏览器在响应时导航到URI。虽然现在我大声输入,但浏览器可能不允许这样做。302应该如何影响浏览器?

如果通过AJAX调用此操作(或直接调用服务器的其他形式),浏览器将无法知道服务器返回302(或40x、50x、200或任何其他类型的响应)

其行为与AJAX请求获得200多个数据响应完全相同——浏览器不会神奇地导航到该响应页面

解决方案:如果您需要根据AJAX请求重定向,则需要重新设计协议,以返回大约200个响应,其中显示“请重定向到此Url”,并在收到此类响应时在客户端相应地设置
window.location.href


请注意,AJAX调用将遵循302重定向,调用的结果将是您重定向到的页面(如果在同一个域上),或者如果它是跨域的,并且CORS未在目标上打开,则会出现某种形式的“拒绝访问”。有关详细背景信息,请参阅。

不确定-302/found+位置的问题在于您如何告诉浏览器执行客户端重定向到任何Url。你能解释一下你期望从中得到什么吗?可能您正在寻找错误的XXXXResult类型或不同的代码。(您有没有可能使用它来响应AJAX请求?)。我想我希望它能强制浏览器导航到响应URI。是的,我想发生的是当用户点击一个链接时,比如stackoverflow.com,客户端应用程序(swf或html页面)将分析信息发送到uri,然后导航到链接(stackoverflow.com)。这在flash中是一个问题,因为它将这视为两次单独的点击,安全性不允许这样做。@AlexeiLevenkov是的,我是从一个AJAX请求中发出这篇文章的,尽管我对响应不做任何处理。谢谢你的帮助,我明白了我的问题所在。因为我没有在URL上发布表单,所以浏览器不知道发生了什么,即使我得到的是302。为了解决这个问题,我将把ActionResult更改为get请求,该请求通过Querystring接受信息,因此我的应用程序实际上会将浏览器位置更改为myapi/events/google?param1={},然后结果将是重定向,因为这是通过浏览器进行的,我认为它会工作。无论如何,谢谢你的帮助。
Access-Control-Allow-Head...    Content-Type
Access-Control-Allow-Meth...    GET,POST
Cache-Control   private
Content-Length  139
Content-Type    text/html; charset=utf-8
Date    Wed, 22 May 2013 22:42:25 GMT
Location    /events/www.google.com
Server  Microsoft-IIS/7.5
access-control-allow-orig...    *