【发布时间】:2019-05-17 13:59:30
【问题描述】:
我花了两天时间试图让这个设置工作,但显然我还没有偶然发现正确的设置组合。据我所知,这应该是可能的,但我无法让它发挥作用。
我有 2 个 ASP.NET Core 2.2 项目。一个是提供静态资源的基本 Web 服务器,另一个是处理标准 REST 请求的 Web API 项目。很标准的东西。仅供参考,我很快还需要添加另一个 API 项目,但现在我只想让这个“简单”案例工作。
在解决方案属性中,我已经告诉 VS 启动这两个项目。
我还编辑了applicationhost.config 文件,将两者都作为虚拟目录包含在 IIS Express 中。我希望任何带有/api 的东西都可以转到 API 控制器项目,而其他任何东西都可以转到 UI(静态资源)项目。
<site name="Par.Web" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Source\repos\Par.Web\Par.Web.Ui" />
</application>
<application path="/api" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Source\repos\Par.Web\Par.Web.Api" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:57730:localhost" />
</bindings>
</site>
我还编辑了每个项目的 launchSettings.json 文件,以在 iisSettings 中包含相同的 URL。
来自 UI 项目:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57730/",
"sslPort": 0
}
},
并且来自 API 项目:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57730/api/",
"sslPort": 0
}
},
当我运行解决方案时,我会从 UI 项目中获得响应,但任何 API 请求都会返回 404 错误。似乎 VS 没有启动第二个项目,因为我在 API 项目的输出窗口中也看不到任何内容。然而 IIS Express 似乎表明一切都在运行。
我看到帖子说applicationhost 和launchSettings 之间的端口必须都不同,但这并没有帮助。事实上,如果它们不匹配,IIS Express 似乎会重写applicationhost 中的绑定信息以包含来自launchSettings 的端口号。我还尝试使 API 虚拟目录成为 applicationhost 中应用程序的子元素,但这也不起作用。我还进行了其他不顾一切的尝试以使其实现某事,例如在进程外运行项目并在applicationhost 中创建一个单独的站点,但我所能做的就是让事情变得更糟.
正如我所说,我已经看过其他关于这样做的帖子,但我发现的所有内容都是针对旧版本的 Visual Studio(或 Visual Studio Code),或者这些项目不是 .Net Core。显然这些有所作为。
任何帮助将不胜感激。
【问题讨论】:
标签: visual-studio asp.net-core iis-express