我有一个在Azure上运行的.NET MVC 3,SQL Server应用程序。它有2个Web角色实例和一个工作者角色实例。
我们目前允许客户在其显示我们内容的网站中插入iFrame(我知道,它不是理想的,但不在我身边)。
要获取此内容,我们有一个公共页面,接受公司的唯一标识符。例如,StackOverflow将使用' http://myapplication.com/stack-overflow'。这将返回特定于公司的html页面。
我们喜欢将客户端的CName记录直接映射到我们应用程序中的内容。根据我的理解,我们需要接受,在StackOverflow的情况下,' stack-overflow.myapplication.com'找到提取子目录并在' http://myapplication.com/stack-overflow'返回内容。
任何人都可以了解如何在Azure上完成这项工作吗?
任何帮助都会有很多学徒。
此致 布赖恩
答案 0 :(得分:2)
Azure和任何IIS部署的应用程序都是相同的。您只需要将所有自定义子域作为CNAME映射到您的cloudapp.net域。请勿更改服务定义和/或配置文件中的任何内容。在您的应用程序中,有一个简单的逻辑可以检查:
Request.Headers["host"]
此标头将具有完整的主机名(即stack-overflow.myapplication.com)。您现在可以解析URL,提取子域并将其映射到适当的资源。
另一种方法是使用IIS的URL重写模块,并构建类似于I did with Apache Web Server and mod_rewrite的东西(我认为你需要的是什么)。我不确定你是否可以使用我的Apache重写规则1:1进行IIS重写模块,但这将是一个很好的起点。请注意,现在(因为Azure SDK 1.3)默认情况下在Azure完整IIS中启用URL重写模块。