2012-03-13 52 views
1

我們目前的託管公司不允許的一個主域名下多個域不同的虛擬目錄的主機頭項,所以我們必須在Global.asax Begin_Request事件處理一些代碼。這工作很好迄今!ASP.Net MVC 3路由使用嵌套的虛擬目錄,403錯誤

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落空 - 比賽,去到〜/其它/ Default.aspx的( 「〜/ Other /」目錄也是一個虛擬目錄,我們正在使用ASP.Net)。

這不:
www.seconddomain.com - www.seconddomainname.com/second/失敗!
的「〜/秒/」目錄也是一個虛擬目錄,但是我們使用ASP.Net MVC 3路由,我們得到的錯誤是「HTTP 403」,這將表明,我們需要允許文件的權限,「第二「目錄被配置爲虛擬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配置的整體解決方案?

+0

你的MVC應用程序 – Lloyd 2012-03-13 12:15:47

+0

與路線@Lloyd我更新的代碼配置做什麼路線。謝謝 – 2012-03-13 12:36:58

回答

0

我還沒有遇到過這樣的問題,但你有沒有試過Server.Transfer的呢?我不確定是否嘗試使用此路由發送請求,如果是這樣,使用response.redirect將發佈的變量丟失,並且您可能無法映射到控制器上的正確操作,該操作接受一定數量的參數。

+0

Server.Transfer不能跨越虛擬目錄。謝謝 – 2012-03-13 13:15:23