在IIS express中允许localhost域名之前的前缀

时间:2015-07-24 13:31:43

标签: visual-studio-2013 asp.net-mvc-5 iis-express

我正在构建一个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.

我在我的hosts文件中添加了sub.example.com和a.sub.example.com作为127.0.0.1的别名。

我的applicationhost.config文件的'site'条目如下所示:

<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 Express无法启动。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

我知道的方法是设置IIS applicationhost.config(完整路径:%UserProfile%\ Documents \ IISExpress \ 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:" />以接受该端口上的所有主机(请注意空字符串,而不是通配符*)。

您必须将此主机设置为指向hosts文件中的127.0.0.1。或者,使用您拥有的域并将 .sub.mydomain指向127.0.0.1。主机文件不支持通配符()但DNS支持!这意味着我可以轻松设置myproject.sub.mydomain和myproject.sub.mydomain,而无需在主机文件中添加新行(只要我有互联网连接)!

希望这有帮助