有沒有什麼辦法可以在ASP.NET MVC中使用子域名?ASP.NET子域的URL重寫和URL生成
我看到了許多不同的方法,但他們都不是完全與ASP.NET MVC架構的工作:
一)使用RouteConstraint(如MVC 3 Subdomain Routing) - 它有助於asp.net的MVC選擇合適的路線,但不不解決URL生成問題
b)定義自定義路由類:http://blog.tonywilliams.me.uk/asp-net-mvc-2-routing-subdomains-to-areas或http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx,均與URL生成問題(第二個提供HtmlHelper.ActioLink擴展爲一個解決方案,但是這是需要什麼只有小部分 - 網址是使用Html.BeginForm,Ajax.BeginForm,Url.Action等構造 - 對現有代碼庫進行太多更改+沒有人會保證,t帽子新手不會忘記使用正確的擴展名+不知道這是否適用於T4MVC)。
c)使用URL重寫規則:
<rules>
<rule name="SubDomain" stopProcessing="false">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(?!www)(\w+)\.domain\.com$" />
</conditions>
<action type="Rewrite" url="{C:1}/{R:1}" />
</rule>
</rules>
所以,如果用戶請求admin.domain.com,asp.net的MVC明白domain.com/admin。 到目前爲止好,問題是這個(我實際使用T4MVC,但這裏是沒有它的例子,不是嚇唬那些誰從未使用過它):
<a href="@Url.Action("Index", "Home")">
這一點,根據我的路由應該去到domain.com,但它給出的例外「不能使用領先..退出頂部目錄以上」。
我想這是因爲UrlAction嘗試使用當前url(這是重寫後的domain.com/admin)構造url並導致失敗。此外,我認爲這只是一種方式 - 只是爲了找到正確的區域/控制器/操作,而不是爲了創建正確的URL。
所以問題是,有人做過這兩種方式(我的意思是路由到正確的區域/控制器/行動和使用標準助手,如HtmlHelper,UrlHelper生成網址)?
寫代碼,你已經解決了這個問題?因爲我有同樣的東西。 – cryss
不,只要使用子域名只是爲了方便,沒有嚴格的要求,我決定不使用它們。 – Giedrius