协议绑定错误与Windows Azure网站中的通配符子域

时间:2014-04-17 03:58:05

标签: asp.net-mvc azure dns azure-web-sites

我有一个作为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服务的问题。

提前致谢

3 个答案:

答案 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,这样应该可以。