我有一个作为Azure网站运行的多租户MVC应用程序。通过使用子域解析租户。因此,租户A可以通过http://tenanta.myapp.com来解决。只要我在每个租户的DNS服务器上创建单独的CNAME记录,这都能很好地工作。但是我不想这样做。
所以我成功地将通配符A记录* .myapp.com添加到我的DNS记录中,并且在azure中添加了自定义域名* .MyApp.com。所以现在我可以使用http://anything.myapp.com,它将解析为我的天蓝网站。这太好了,我以为我已经开始运转了。
直到我尝试浏览到使用AJAX调用WCF服务的页面(WCF服务在网站内部)。有一堆WCF服务,他们都扔了500。
System.UriFormatException:协议绑定' *:80:*。myapp.com'不适用于' http'。这可能是因为端口号超出范围。
如果我从Azure中的自定义域列表中删除* .myapp.com,那么我就不会收到错误,但我的通配符子域不再被定向到网站,而是从azure获得404。 / p>
我已尝试使用WCF服务的绑定做一些事情,包括尝试所有HostNameComparisonMode选项StrongWildcard,WeakWildcard和Exact。
我希望别人之前能够解决这个问题。有很多关于获取通配符子域工作的帖子,但没有特定于我使用WCF服务的问题。
提前致谢
答案 0 :(得分:1)
这可能是由于绑定形状:80: .myapp.com在将通配符自定义域名添加到站点时在applicaitonHost.config中创建(在Azure网站中)服务)。我们将调查并尝试解决此问题。
同时,可能值得尝试清除web.config中的绑定部分并重新创建表单的绑定
< binding protocol =“http”bindinginformation =“*:80:”/>
让我知道这是否有效。
答案 1 :(得分:0)
在这里补充Zhe的答案是如何做到的:
在“site”文件夹下创建applicationHost.xdt文件,并将下面的内容复制到其中 (more info on transform on Kudu site)
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.applicationHost>
<sites>
<site name="%XDT_SITENAME%" xdt:Locator="Match(name)">
<bindings>
<binding protocol="http" bindingInformation="'*:80:*.myapp.com" xdt:Locator="Match(bindingInformation)" xdt:Transform="Remove" />
</bindings>
</site>
</sites>
</system.applicationHost>
</configuration>
答案 2 :(得分:0)
天蓝色,对于自定义域名,添加*而不是* .myapp.com,这样应该可以。