【问题标题】:How to host an ASP.NET Web API that is composed of multiple projects in IIS?如何在 IIS 中托管由多个项目组成的 ASP.NET Web API?
【发布时间】:2020-01-30 16:52:46
【问题描述】:

我是 ASP.NET Web API 和一般 RESTful 服务的新手。我最近开始使用一个 Web API,该 API 已经由另一个不再在公司的开发人员启动,他用于制作这个 API 的方法是为 API 公开的每个资源创建一个新项目。我的问题是,在 IIS 中托管此 API 的正确方法是什么?我可以在 IIS 管理器中为每个项目创建一个新网站,但是我会有很多网站。此外,出于测试目的,我尝试在 IIS 中仅创建一个网站,然后在网站中为必须部署的每个服务添加一个应用程序,这也有效,问题是每个项目(资源)都有一个虚拟目录创建,然后访问资源的路由包括虚拟目录名称,我不希望这样,因为路由将如下所示:

BaseURL/虚拟目录 /api/resource

我搜索了有关如何在 IIS 中托管 ASP.NET Web API 的示例,但我发现的所有帖子都显示了如何托管单个服务项目,而不是由多个项目组成的 API。因此,如果有人能指出我正确的方向,我将不胜感激。提前致谢。

【问题讨论】:

  • 请粘贴几张屏幕截图。目前尚不清楚它在 VS 解决方案资源管理器和 IIS 管理器中的外观。
  • URLrewrite 在某些情况下可用于集成多个 URL。但我们需要知道您的项目是如何运作的。如果您不想创建多个网站或 webapp,那么您必须集成您的项目,使其根据不同的参数返回结果。此外,托管多个网站是很正常的。

标签: asp.net rest iis asp.net-web-api hosting


【解决方案1】:

根据您的描述,我猜您希望 url 现在应该显示虚拟目录。

例如: VirtualDirectoryName.yourdomain.com/api/resourcewww.yourdomain.com/VirtualDirectory/api/resource

如果这是您的要求,我建议您可以尝试使用 url rewrite 扩展来实现您的要求。

您可以从以下网址直接下载: https://www.iis.net/downloads/microsoft/url-rewrite

然后您可以在 web.config 中使用以下 rewrtite 规则。

<rule name="Test" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="(.+).sample1.com" />
</conditions>
<action type="Rewrite" url="http://www.sample1.com/{C:1}" />
</rule>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多