【问题标题】:Create subdomains in staging azure web role在暂存 azure web 角色中创建子域
【发布时间】:2013-03-26 09:29:30
【问题描述】:
我有两个项目的解决方案:
- Project1 是一个 asp.net mvc 4 项目
- Project2 是一个 asp.net webapi 项目
我想让它们都在同一个 webrole 上,在生产中我似乎可以执行以下操作:
- 所有发往 mydomain.com 的请求都将发往 MVC 项目
- 所有到 api.mydomain.com 的请求都将转到 webapi 项目
在暂存时,基本 url 类似于 ec3abfacbfb27a1800f6bc0f2b168121.cloudapp.net,有没有办法做到这一点:
- 所有发往 ec3abfacbfb27a1800f6bc0f2b168121.cloudapp.net 的请求都将发往 MVC 项目
- 对 api.ec3abfacbfb27a1800f6bc0f2b168121.cloudapp.net 的所有请求都将转到 webapi 项目
提前致谢
【问题讨论】:
标签:
asp.net-mvc-4
azure
asp.net-web-api
azure-web-roles
【解决方案1】:
没有。
在您的特定场景(以及更多场景)中,我建议根本不要使用登台环境。请改用其他生产环境。例如,将其命名为[myapp-stating].cloudapp.net。
比使用您自己的自定义域创建一个映射(比如说它是myapp.com):
-
staging.web.myapp.com -> CNAME -> myapp-staging.cloudapp.net
-
staging.api.myapp.com -> CNAME -> myapp-staging.cloudapp.net
【解决方案2】:
首先,在您的网络应用程序中设置路由(如果您尚未设置)。它应该在主机名上查找 api 前缀,否则与 URL 无关。
然后,对于使用浏览器进行手动测试,编辑 %SystemRoot%\System32\drivers\etc\hosts 并为 api.abcdefghijklmnopqrstuvwxyz.cloudapp.net 添加一行,使用您的登台服务器的 IP 地址。
对于自动化测试,让测试客户端使用其常规主机名(不带api 前缀)连接到登台服务器,但根据需要设置Host 标头以包含api 前缀。