我正在构建一个MVC web应用程序,它应该响应像a.sub.example.com、b.sub.example.com、c.sub.example.com等域。我可以弄清楚如何提取a、b、c等前缀,并相应地创建一个正确的路径,但我很难让IIS将请求实际转发到同一个web应用程序。
我遵循this指南,让IIS监听另一个地址,在本例中,sub.example.com运行良好。然而,我不知道如何让它去聆听那个域的所有子域。当我将浏览器定向到a.sub.example.com时,会得到一个错误:
HTTP Error 400. The request hostname is invalid.我在主机文件中为127.0.0.1添加了sub.example.com和a.sub.example.com作为别名。
我的applicationhost.config文件的“站点”条目如下所示:
<site name="MyProject.Web" id="7">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="..." />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8888:sub.example.com" />
</bindings>
<applicationDefaults applicationPool="Clr2IntegratedAppPool" />
</site>当我将'bindingInformation属性替换为
"*:8888:*.sub.example.com" 正如前面提到的指南所建议的,当我希望IIS express侦听多个域时,我应该这样做,IIS根本无法启动。
我是不是漏掉了什么明显的东西?
发布于 2015-07-28 19:05:26
我所知道的方式是设置IIS applicationhost.config (完整路径:applicationhost.config)并找到对端口号的引用。
<site name="WebSite1" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%WebSite1" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":49483:localhost" />
</bindings>
</site>我通常添加<binding protocol="http" bindingInformation=":49483:" />以接受端口上的所有主机(注意空字符串,而不是通配符*)。
您必须设置此主机才能指向主机文件中的127.0.0.1。或者,使用您拥有的域并将.sub.mydomain指向127.0.0.1。主机文件不支持通配符(),但DNS支持!这意味着我可以轻松地设置myproject.sub.mydomain和myproject.sub.mydomain,而不必为我的主机文件添加新的行(只要我有互联网连接)!
希望这能有所帮助
https://stackoverflow.com/questions/31611881
复制相似问题