【问题标题】:How to route all IIS requests to my MVC app?如何将所有 IIS 请求路由到我的 MVC 应用程序?
【发布时间】:2011-12-27 04:06:27
【问题描述】:

我正在创建一个为客户公司管理业务的 MVC 3 应用程序。部署后,传入请求应突出显示客户公司的名称;因此, http://hosteddomain.com/Excelsior/Home/Dashboard/3 应该从客户端 Excelsior 中检索用户的主页。

问题 1:在开发服务器上,这工作正常 (localhost:28497/ClientCompany/...),因为我的 RouteConstraint 查找公司名称。但是,当我部署它时,如何告诉 IIS 将所有请求发送到我的应用程序?就像现在一样,IIS 将寻找一个名为“ClientCompany”的应用程序。

问题 2:有更好的方法吗?例如,使用 ClientCompany.hosteddomain.com/SomeAppName/[pages...] 形式的 URL。如果是这样,我如何告诉 IIS 将请求重新映射到我的应用程序以及如何从 MVC 应用程序中获取客户公司的名称?

元问题 1:也许更好的问题 1 是如何让我的应用成为 IIS 的默认网站?

感谢您的见解 埃里克

【问题讨论】:

  • 默认网站在 80 端口上运行。在 IIS 中 - 关闭默认端口 80 网站(默认网站),然后创建一个新网站,指向您在 80 端口上运行的应用程序。
  • @SilverNinja 实际上,我所要做的就是在 VS2010 的打包/发布设置的打包/发布 Web 选项卡上将“IIS 网站/应用程序名称”设置为 Default Web Site
  • @SilverNinja 现在我考虑了一下,您的解决方案是让我的应用程序成为默认网站而不将其称为“默认网站”的方法——谢谢!

标签: asp.net-mvc-3 iis-7 url-routing asp.net-mvc-routing


【解决方案1】:

关于问题 #2,您可以通过 HttpContext.Current.Request 访问原始网址。你可以从那里找到任何你想要的东西。

我会在 IIS 中为单个应用程序设置主机头,然后解析 url 并从那里做任何你需要做的事情。

编辑

唯一需要注册的域名就是TLD(顶级域名),所以

subdomain.tld.com 只是一个子域,您需要为其创建 DNS 条目,然后设置 IIS 主机标头。

看看这个:http://technet.microsoft.com/en-us/library/cc753195(WS.10).aspx

请注意,如果我没记错的话,如果您使用 SSL,主机标头将不起作用。

【讨论】:

  • 你能给我指一个设置主机头的参考吗?我对 IIS 完全陌生。
  • 谢谢,但我想我不会那样做。原因是ClientBusiness.hosteddomain.com必须注册,一般我做不到。
【解决方案2】:

您需要在您的global.asax 中添加Register Routes。您只需定义要接受的模式并指定控制器和操作参数。

【讨论】:

  • 对,但我的问题是让 IIS 将请求路由到我的应用程序。
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 2020-08-20
  • 2013-04-29
相关资源
最近更新 更多