传统上,我在本地主机开发服务器上使用自定义域。大致如下:

dev.example.com
dev.api.example.com

这为我在使用外部api(如Facebook)时提供了很大的灵活性。这在过去与内置的Visual Studio Development Server一起工作得很好,因为我所需要做的只是向指向127.0.0.1的DNS记录添加一个CNAME。

但是,我还不能让它与IIS Express一起工作。我所做的一切努力似乎都失败了。我甚至向applicationHost添加了正确的XML配置。IIS Express的配置文件,但它似乎不能像真正安装IIS那样识别有效的条目。

<binding protocol="http" bindingInformation="*:1288:dev.example.com" />

每当我输入这一行并尝试请求http://dev.example.com:1288时,我都会收到以下消息:

错误请求-无效的主机名

有人知道我是否遗漏了什么明显的东西吗?或者IIS Express团队真的缺乏预见到这种类型的使用?


当前回答

我试了以上所有的方法,都没用。解决这个问题的方法是在hosts文件中添加IPv6绑定。在@David murdoch回答的第五步中,添加两行而不是一行,即:

127.0.0.1 dev.example.com
::1 dev.example.com

我通过从命令行检查$ ping localhost来计算出来,它通常返回:

来自127.0.0.1的回复:bytes=32 time<1ms TTL=128

相反,它现在返回:

回复from::1:时间<1ms

我不知道为什么,但是由于某种原因,IIS Express开始使用IPv6而不是IPv4。

其他回答

以防万一有人需要…

我的要求是:

启用SSL 自定义的域 运行在(默认)端口:443

在IISExpress中设置这个URL: http://my.customdomain.com

为了设置这个,我使用了以下设置:

项目网址:http://localhost:57400

起始URL: http://my.customdomain.com

/ .vs / {solution-name} / config / applicationhost。配置设置:

<site ...>
    <application>
        ...
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:57400:" />
        <binding protocol="https" bindingInformation="*:443:my.customdomain.com" />
    </bindings>
</site>

我试图将公共IP地址集成到我的工作流程中,这些答案没有帮助(我喜欢使用IDE作为IDE)。但以上这些让我找到了解决方案 (我花了大约2个小时的时间才把它与Visual Studio 2012 / Windows 8集成起来)下面是我最终得到的结果。

applicationhost。C:\Users\usr\Documents\IISExpress\config

    <site name="MySite" id="1">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Users\usr\Documents\Visual Studio 2012\Projects\MySite" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:8081:localhost" />
            <binding protocol="http" bindingInformation="*:8082:localhost" />
            <binding protocol="http" bindingInformation="*:8083:192.168.2.102" />
        </bindings>
    </site>

设置IISExpress以管理员身份运行,以便它可以绑定到外部地址(而不是本地主机) 以管理员身份运行Visual studio,这样它就可以以管理员身份启动流程,从而允许发生绑定。

最终结果是,在我的例子中,您可以浏览到192.168.2.102并进行测试(例如在Android模拟器中)。我真的希望这能帮助到其他人,因为这对我来说绝对是一个恼人的过程。

显然,这是一个安全功能,我希望看到禁用。

在我的WebMatrix IIS Express安装中,从“*:80:localhost”更改为“*:80:custom”。hostname“没有工作(“坏的主机名”,即使有适当的etc\hosts映射),但“*:80:”工作-并且没有其他答案所要求的额外步骤。注意,“*:80:*”不会这样做;去掉第二个星号。

把这个留在这里,以防有人需要…

我需要在IIS Express中为Wordpress Multisite设置自定义域,但在我以管理员身份运行Webmatrix/Visual Studio之前,任何东西都不起作用。然后我就可以将子域绑定到同一个应用程序。

<bindings> 
    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>

然后转到http://whatever.localhost:12345/将运行。

像上面的Jessa Flint一样,我不想手动编辑.vs\config\applicationhost。config,因为我希望更改能够持久地保存在源代码控制中。我也不想有一个单独的批处理文件。我使用的是VS 2015。

项目属性→构建事件→预构建事件命令行:


::The following configures IIS Express to bind to any address at the specified port

::remove binding if it already exists
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /-bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

::add the binding
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /+bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

只需确保将端口号更改为所需的端口。