3

我正在使用ASP.NET MVC4和WinHost。如何使用URL重寫和ASP.NET優化的捆綁包管理winhost上的子域

就像問問題here,我碰到了同樣的問題:

我嘗試WinHost和我遇到一些問題, 子域。在WinHost上,您可以爲每個託管 帳戶擁有多個子域,但每個子域指向根網站。例如。你可以在 有www.example.com,sub1.example.com和sub2.example.com,但是所有 都顯示http://www.example.com/的內容。

其他主機允許您將子域指向 網站中的子文件夾。這將允許您將sub1.example.com指向/ sub1, sub2.example.com,將/ sub2和www.example.com指向/。

WinHost建議使用一個asp/aspx頁面重定向 http://sub1.example.comhttp://sub1.example.com/sub1,它指向 到/ SUB1。雖然這將工作,我想沒有在 的URL兩次的子域。

所以我嘗試使用IIS7 URL重寫指向http://sub1.example.com到 /sub1。本鮑威爾在his blog上詳細描述了這一點。

我設法讓這部分工作,所以http://sub1.example.com實際上指向我的虛擬應用程序「/ sub1」在IIS中。

如果我使用Url.Content,它可以完美地工作。

現在,我正在使用ASP.NET優化和捆綁腳本和CSS。問題是,它確實需要一個相對URL,即:

  bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate*")); 

但是,因爲它在這裏相對URL是什麼,我會在標記得到:

<script src="/sub1/bundles/jqueryval?v=UgyEMAYOuSB9Bb6HcOEVHpd6fIIp54yF086SRNVcdIY1"></script> 

當然,因爲「SUB1的, 「它沒有找到該文件。我想到了URL重定向,我從來沒有真正的工作。也許MVC中的路線?不確定如何做到這一點。我也可以放棄捆綁使用「Url.Content」,我認爲這很令人傷心。

什麼是處理這個問題的最好方法?

回答

1

我知道你可以使用IBundleTransform來根據獨特的情況修改包中的內容。您可能能夠修改捆綁包上下文本身。這裏是一個鏈接MVC4 StyleBundle not resolving images

+0

我的問題是真正的「Script.Render(...)」函數呈現虛擬目錄。 – 2013-04-10 11:11:22

+0

你說你已經在iis中配置了一些重寫規則。我想知道是否可以使用RouteConfig.RegisterRoutes(RouteTable.Routes)在啓動代碼中捕獲路由問題? – 2013-04-10 20:08:50