【问题标题】:IIS to handle api and website on same portIIS 在同一端口上处理 api 和网站
【发布时间】:2020-06-08 19:54:47
【问题描述】:

我有一个用 asp.net 构建的 API,它使用 OWIN.hosting.WebApp 作为 Windows 服务在https://example.com/api/v1/myEndpoint 托管。它通过netsh绑定到端口443。当我启动 OWIN 应用程序时,它的完成如下:

Dim Address As String = "https://*:443/
WebApp.Start(Of Application)(Address)

我的网站也使用 SSL 托管在 IIS 中并绑定到端口 443 - https://example.com/web

它们都可以正常启动和运行。但似乎 IIS 正在阻止对https://example.com/api/v1/myEndpoint 的请求。 IIS 运行时 Postman 无法访问 API。如果我停止 IIS 并尝试完全相同的邮递员请求,则 API 会返回应有的数据。一旦我启动 IIS 备份,API 将不再响应。

是否可以添加重写规则以将 API 请求转发到 API 服务?

【问题讨论】:

  • 在 IIS 中托管两者,至少将其中一个托管为具有该绑定的站点上的虚拟应用程序。
  • @mason 如何在 IIS 下运行 api(windows 服务)?
  • 有一些教程描述了 Web API 的各种托管模型,IIS 就是其中之一。

标签: asp.net iis owin


【解决方案1】:

在我看来,您不能在 iis 中托管 asp.net web API windows 服务。 单个 IIS 服务器可以托管多个网站,但为了 IIS 正确分发 HTTP 请求,每个网站都必须使用一些唯一值来标识。对于 IIS 网站,它由三个属性组成,这些属性构成每个网站的唯一组合。它们是:

一个 TCP 端口号 IP 地址 主机头

有关托管网站的信息以以下格式存储在 IIS 元数据库的 ServerBindings 属性中:IP:Port:Hostname。因此,如果您想在同一个端口上托管多个网站,则必须使用唯一的 Host 标头或 IP 地址。

您可以参考以下链接了解更多详情:

http://woshub.com/run-multiple-websites-on-the-same-port-and-ip-address-on-iis/

【讨论】:

    猜你喜欢
    • 2020-06-27
    • 2017-05-09
    • 2012-08-18
    • 2021-05-12
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    相关资源
    最近更新 更多