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

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团队真的缺乏预见到这种类型的使用?


当前回答

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

其他回答

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

并对该方法进行了测试。NET Core 3.1和Visual Studio 2019。

vs PROJECTNAME \配置\ applicationhost。配置

将“*:44320:localhost”修改为“*:44320:*”。

<bindings>
    <binding protocol="http" bindingInformation="*:5737:localhost" />
    <binding protocol="https" bindingInformation="*:44320:*" />
</bindings>

这两个链接都有效:

https://localhost:44320 https://127.0.0.1:44320

现在,如果你想让应用程序与自定义域一起工作,只需要在主机文件中添加以下一行:

C:\Windows\System32\drivers\etc\hosts

127.0.0.1 customdomain

Now:

https://customdomain:44320

注意:如果你的应用在没有SSL的情况下工作,请更改protocol="http"部分。

赞成的答案是有效的。这些信息对我帮助很大。我知道这个话题之前已经讨论过了,但我想添加一些额外的输入。 人们说您必须“手动编辑”应用程序。“Users IISExpress/ config”目录下的config文件。这对我来说是个大问题,因为我想通过源代码控制将配置分发给不同的开发人员。

我发现你可以使用“C:\Program Files\IIS Express\appcmd.exe”程序自动更新这个文件。找到控制参数需要一段时间,但我将在这里分享我的发现。本质上,您可以创建一个.bat文件,运行NETSH命令和APPCMD.EXE(如果您愿意,也可以换出一个主机文件),以便使用IIS Express轻松配置主机头。

你的install bat文件看起来是这样的:

netsh http add urlacl url=http://yourcustomdomain.com:80/ user=everyone 

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /+bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

我也会做一个“卸载”bat文件,将清理这些绑定..(因为很多时候我只是伪造DNS,这样我就可以在主机名敏感的代码上工作)

netsh http delete urlacl url=http://yourcustomdomain.com:80/

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /-bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

我希望这些信息对某人有所帮助。我花了一点时间才发现。

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

我需要在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/将运行。

对于Visual Studio 2015,上述答案中的步骤适用,但应用程序主机。配置文件在一个新的位置。在你的“解决方案”文件夹中,如果你升级了,并且有两个版本的applicationhost,这是令人困惑的。在您的机器上配置。

\.vs\config

在该文件夹中,您将看到您的applicationhost。配置文件

或者,您也可以在解决方案文件夹中搜索.config文件并以这种方式找到它。

我个人使用以下配置:

在我的hosts文件中包含以下内容:

127.0.0.1       jam.net
127.0.0.1       www.jam.net

下面是我的applicationhost。配置文件:

<site name="JBN.Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Dev\Jam\shoppingcart\src\Web\JBN.Site" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:49707:" />
            <binding protocol="http" bindingInformation="*:49707:localhost" /> 
    </bindings>
</site>

记得以管理员身份运行visual studio 2015实例!如果你不想每次都这样做,我建议:

默认情况下,作为管理员如何运行Visual Studio ?

我在尝试升级到visual studio 2015时遇到了问题,并意识到我的配置都没有被转移。