【问题标题】:MVC 3 dynamic routing for hosted site托管站点的 MVC 3 动态路由
【发布时间】:2011-12-07 21:10:25
【问题描述】:

我正在开发一个由 GoDaddy 托管的 MVC 3 站点,我需要在 URL 中存储动态变量。比如:

http://www.example.com/{Cat}/{List}/{Item}/{Action}
http://{Cat}.example.com/{List}/{Item}/{Action}

后者是最好的。

该站点允许用户创建自定义列表、列表类别和列表项。列表类别可以是SportsNews,列表可以是NBA TeamsPolitics,列表项可以是LakersPres. Obama。用户可以生成 3 个中的任何一个(仅不能重复)。

我的目标是使 URL 类似于 http://sports.example.com/nba/lakers 并让用户路由到 Controller = "Items", Action = "Details",参数为 Cat = "sports", List = "nba", Item = "lakers",如果用户指定 Action(如编辑、删除等),它替换Details

我对 IIS(更具体地说是通过 GoDaddy 的 IIS)不是很熟悉,所以 IDK 是否可以使用子域(但这是最终目标),如果可能的话,我想知道我需要什么做(即自我主机+步骤)。

谢谢

【问题讨论】:

    标签: c# asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

    此部分是一个域http://sports.example.com/ 转换为物理地址,例如203.10.01.1 您必须在 GoDaddy 注册一个子域。 ASP.NET MVC 将处理 ... nba/lakers 部分。因此,您的域将是 http://sportworldwide.com/,并带有像 http://nba.sportworldwide.com/lakers 这样的子域。如果只想使用 MVC 3。尝试类似

    sportworldwide.com/sport/nba/lakers。

     routes.MapRoute("DefaultSport", "sport/{action}/{id}", 
                        new { controller = "Sport",  action = "", id= "" });
    

    编辑:

    我不能对通配符 DNS 记录性能等发表太多评论。我看到的唯一问题是您需要编写自定义路由处理程序,然后您需要获取 Url 的子域部分,例如运动并更改操作或 id 值以处理您的子域网址。 这是通过路由处理程序修改路由的示例: asp.net MvcHandler.ProcessRequest is never called

    【讨论】:

    • 感谢您的帮助 :) 如果我自己托管网站(从而完全控制 IIS),这是否会让我对子域更加灵活?还是在 IIS 之外处理子域(在 DNS 服务器之一或其他地方)?我见过有动态子域的网站,所以一定有可能,只是不知道他们是怎么做到的!
    • 那么您需要查看 ISAPI 过滤器。这是一篇关于利弊的文章 - 从哪里获得 ISAPI 重写过滤器。 seoconsultants.com/windows/isapi/subdomains 对于 IIS 看看 learn.iis.net/page.aspx/460/using-the-url-rewrite-module
    • 通配符 DNS 记录怎么样?如果我只是添加了通配符 DNS A 记录并将其转发到我的站点的 IP,那是否允许我根据子域进行过滤?
    • 我不能对通配符 DNS 记录性能等发表过多评论,但是您绝对可以这样做。我看到的唯一问题是您需要编写一个自定义路由处理程序 stackoverflow.com/questions/7206065/… 然后获取 Url 的前面部分,例如运动并更改操作值或 id 处理您的子域网址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    相关资源
    最近更新 更多