myn*_*fey 19 asp.net subdomain asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas
有没有办法将ASP.NET MVC 2应用程序中的区域映射到子域,例如
movies.example.com/Theater/View/2
代替
example.com/Movies/Theater/View/2
其中{area ="Movies",controller ="Theatre",action ="View",id = 2}.
Eil*_*lon 11
区域与路由没有直接关系,因此您的问题变为"路由支持子域吗?"
不幸的是,答案是没有内置的支持.
然而,好消息是许多人尝试使用基于路由的自定义代码取得成功:
如果你弄清楚如何在没有区域的情况下路由子域,那么对区域进行处理应该不再困难.转到您的区域注册环境,并使用您在其中选择的任何技术.区域也只不过是方式组合在一起的控制器和视图 - 他们没有很多内在的含义ASP.NET MVC本身(他们做一点点,但不是很多).
您可以使用IIS7 URL重写模块轻松地将域或子域映射到MVC2区域.以下是将子域映射到两个区域的两个简单规则.如果请求是针对实际文件(即CSS,JS或图像文件),我添加了一个不使用此规则的限制.
以下是web.config中的示例配置:
<system.webServer>
<rewrite>
<rules>
<rule name="SubA Area">
<match url=".*" />
<action type="Rewrite" url="/SubA/{R:0}" />
<conditions>
<add input="{HTTP_HOST}" pattern="suba.mydomain.com" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
</rule>
<rule name="SubB Area">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="subb.mydomain.com" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/SubB/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
您必须更改以下规则才能使用您的特定用例.特别是如果您需要在根区域使用控制器.在这种情况下,只需添加条件或创建新规则.
下载IIS URL重写模块(必需):http: //learn.iis.net/page.aspx/460/using-the-url-rewrite-module/
| 归档时间: |
|
| 查看次数: |
5127 次 |
| 最近记录: |