IIS Express-Visual Studio-在同一端口上运行多个站点

use*_*073 5 iis visual-studio

我有多个使用相同端口的API(8888)。这些API是不同解决方案的一部分。

http:// localhost:8888 / api1

http:// localhost:8888 / api2

....

当我在Visual Studio 2013(按F5键)中运行任何API时,iis express将启动,并且所有API都在运行。即使API是不同解决方案的一部分,也会发生这种情况。单击“查看站点”下的iis Express图标可以看到它们。

我安装了VS 2015,当我在Visual Studio中运行一个API时,其他API无法运行。我什至无法运行其他解决方案中的其他API,因为我得到了:

unable to launch iis express.. port is in use
Run Code Online (Sandbox Code Playgroud)

运行任何API时如何使其他API运行?我需要在VS 2015中模仿VS 2013中存在的行为。

谢谢。

小智 6

我针对类似的情况解决了这个问题,尽管在我的情况下,我选择通过命令行运行 IISExpress 并将配置文件作为参数传递。

  1. 编辑 applicationhost.config 文件。我通过文件夹路径 %USERPROFILE%\Documents\IISExpress\config 找到了我的
  2. 找到 <sites> 部分(在 <system.applicationHost> 下找到)

例如,我想在本地主机的端口 80 上同时托管两个应用程序:

<sites>
    <site name="test" id="1" serverAutoStart="true">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\codepath" />
        </application>
        <application path="/api1" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\codepath\api1" />
        </application>
        <application path="/api2" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\codepath\api2" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation=":80:localhost" />
        </bindings>
    </site>
<!-- other settings  relevant to your installation of IISExpress-->
</sites>
Run Code Online (Sandbox Code Playgroud)

我必须做的关键事情是:

  1. 确保 applicationhost.config 是格式良好的 XML
  2. 确保除了两个api应用程序路径之外还指定了根路径
  3. serverAutoStart="true" 确保站点在调用 IISExpress 时启动
  4. 所有应用程序共享同一个应用程序池
  5. 我只定义了一个站点并作为子路径捆绑在我的所有应用程序中