带有嵌套虚拟目录的ASP.Net MVC 3路由,403错误

本文关键字:3路 MVC 错误 Net ASP 嵌套 虚拟 | 更新日期: 2023-09-27 18:27:50

我们目前的托管公司不允许多个域的主机头条目进入一个主域下的不同虚拟目录,因此我们在Global.asax Begin_Request EventHandler中有一些代码。到目前为止效果不错!

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        Dictionary<string, string> domains = new Dictionary<string, string>() { { "otherdomain.com", "~/Other/Default.aspx" }, { "seconddomain.com", "~/SECOND/" } };
        string requestedDomain = Request.ServerVariables["SERVER_NAME"].ToLower();
        foreach (var domain in domains.Keys)
        {
            if (requestedDomain.Contains(domain))
                Response.Redirect(domains[domain]);
        }
    }

这些工作:
www.primarydomain.com-不匹配,转到~/Default.aspx
www.otherdomain.com-匹配并转到~/Other/Default.aspx("~/Other/"目录也是一个虚拟目录,我们使用的是ASP.Net)。

这不是:
www.seconddomain.com-www.secondddomainname.com/second/失败
"~/Secondition/"目录也是一个虚拟目录,但我们使用的是带有路由的ASP.Net MVC 3,我们得到的错误是"HTTP 403",这表明我们需要允许文件权限,"SECOND"目录被配置为虚拟Web目录。

编辑:添加了路线

routes.MapRoute(
            "Default", // Route name
            "/SECOND/{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

我们可能错过了一些非常基本的东西吗?或者有没有针对这种类型的托管、路由和ASP.Net配置的整体解决方案?

带有嵌套虚拟目录的ASP.Net MVC 3路由,403错误

我没有遇到这样的问题,但您尝试过Server.Transfer吗?我不确定您是否试图使用此路由进行发布请求,如果是,则使用response.redirect会丢失已发布的变量,并且您可能无法映射到接受特定数量参数的控制器上的正确操作。