MVC重定向更改域

时间:2014-07-22 10:48:22

标签: asp.net-mvc redirect

我正在尝试重定向到MVC网站中的某个页面,所以我的控制器中有以下代码:

return Redirect("/test");

我在test.local域上通过IIS在本地运行我的网站,当我点击此控制器时,我希望转到http://test.local/test,但出于某种原因,它会将我重定向到http://localhost/test

有没有人知道如何让它保持在同一个域名而不必将域名放入重定向或者我是否也必须包含域名?

请注意,我无法使用RedirectToRouteRedirectToAction,因为网址是一个单独的应用程序(与当前网站位于同一个域中)

1 个答案:

答案 0 :(得分:0)

我创建了一个扩展方法,可以在同一个域上重定向。也许这有帮助

public static class ControllerExtension
{
    public static string FullyQualifiedApplicationPath
    {
        get
        {
            //Return variable declaration
            var appPath = string.Empty;

            //Getting the current context of HTTP request
            var context = HttpContext.Current;

            //Checking the current context content
            if (context != null)
            {
                //Formatting the fully qualified website url/name
                appPath = string.Format("{0}://{1}{2}{3}",
                                        context.Request.Url.Scheme,
                                        context.Request.Url.Host,
                                        context.Request.Url.Port == 80
                                            ? string.Empty
                                            : ":" + context.Request.Url.Port,
                                        context.Request.ApplicationPath);
            }

            if (!appPath.EndsWith("/"))
                appPath += "/";

            return appPath;
        }
    }

    public static RedirectResult RedirectSameDomain(this Controller controller, string url)
    {
        return new RedirectResult(FullyQualifiedApplicationPath + url);
    }
}

您可以像这样使用

return this.RedirectSameDomain("/test");

感谢SO用户Brian Hasden FullyQualifiedApplicationPath以及他对How can I get the root domain URI in ASP.NET?

的回答