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

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


当前回答

以防万一有人需要…

我的要求是:

启用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>

其他回答

像上面的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"

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

以防万一有人需要…

我的要求是:

启用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>

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

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

这是为我工作(更新的VS 2013,见2010年的修订历史,VS 2015见这个:https://stackoverflow.com/a/32744234/218971):

Right-click your Web Application Project ▶ Properties ▶ Web, then configure the Servers section as follows: Select IIS Express ▼ from the drop down Project Url: http://localhost Override application root URL: http://dev.example.com Click Create Virtual Directory (if you get an error here you may need to disable IIS 5/6/7/8, change IIS's Default Site to anything but port :80, make sure Skype isn't using port 80, etc.) Optionally: Set the Start URL to http://dev.example.com Open %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (Windows XP, Vista, and 7) and edit the site definition in the <sites> config block to be along the lines of the following: <site name="DevExample" id="997005936"> <application path="/" applicationPool="Clr2IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\path\to\application\root" /> </application> <bindings> <binding protocol="http" bindingInformation=":80:dev.example.com" /> </bindings> <applicationDefaults applicationPool="Clr2IntegratedAppPool" /> </site> If running MVC: make sure the applicationPool is set to one of the "Integrated" options (like "Clr2IntegratedAppPool"). Open your hosts file and add the line 127.0.0.1 dev.example.com. ► Start your application!

评论中有一些很棒的建议:

您可能需要以管理员身份运行Visual Studio。 如果你想让其他开发人员看到你的IIS,运行netsh http add urlacl url=http://dev.example.com:80/ user=everyone 如果您希望站点为所有主机解析,请设置bindingInformation="*:80:"。 使用任何端口,80只是方便。要解析所有主机,您需要以管理员身份运行Visual Studio

对于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时遇到了问题,并意识到我的配置都没有被转移。