【问题标题】:MVC redirect changing domainMVC 重定向更改域
【发布时间】:2014-09-13 03:37:23
【问题描述】:

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

return Redirect("/test");

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

有谁知道我怎样才能让它留在同一个域中,而不必将域名放入重定向中,或者我是否还必须包含域名?

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

【问题讨论】:

    标签: asp.net-mvc redirect


    【解决方案1】:

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

    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? 的回答

    【讨论】:

      猜你喜欢
      • 2015-04-26
      • 2012-09-14
      • 2019-04-29
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多