我需要在RedirectToAction中执行重定向前置域,因此它不是相对的,而是绝对的URL。如何实现这一目标?
编辑:我将添加更多信息: 它是一个多租户应用程序,允许客户端设置proxydomains。所以我需要所有网址都通过代理。因此,http://domainX.com/Question/Preview/640328的actionredirect需要通过http://domainY.com/SUBDOMAIN/Question/Preview/640328
答案 0 :(得分:2)
使用RedirectToAction无法完成此操作。但是,UrlHelper.RouteUrl method可用于使用特定主机名生成绝对URL。
您只需使用UrlHelper.RouteUrl生成网址,然后使用重定向方法执行重定向。
如果您知道路线名称,请使用以下内容:
var routeValues = new RouteValueDictionary(new { id = 12345 });
string url = Url.RouteUrl("Products.Show", routeValues, "http", "www.domainname1.com");
return Redirect(url);
如果要根据控制器名称和操作生成URL,请使用以下命令:
var routeValues = new RouteValueDictionary(
new { controller = "Products", action = "Show", id = 12345 });
string url = Url.RouteUrl(null, routeValues), "http", "www.domainname1.com");
return Redirect(url);
上述任何一种都会重定向到http://www.domainname1.com/products/12345
这样的绝对网址请注意,通过内置的Controller.Url属性,控制器代码中可以使用UrlHelper的实例。
答案 1 :(得分:0)
根据定义,重定向到操作必须将您带到一个控制器中的操作。如果您想重定向到另一个网址,请尝试:
return Redirect("http://www.stackoverflow.com");