首页 > 解决方案 > 使用 IIS 作为现有 Kestrel 进程的反向代理(无 WAS)

问题描述

考虑这种情况:我有一个长期运行的自主 .NET 5 windows 服务。此 Windows 服务包括一个由 Kestrel 和 ASP.NET Core 提供支持的 API 端点。假设端点配置为监听http://localhost:5002

现在,我想使用 IIS 使该端点在自定义 url 下的服务器外部可用,比方说https://servername:443/myservice

通常,我会使用 IIS 在 IIS 中托管一个 ASP.NET Core 应用程序ASP.NET Core Module,它会处理所有事情,包括底层进程的生命周期。在这种情况下,IIS 根本应该干扰进程,因为它是一个 Windows 服务。

我该怎么做呢?

ASP.NET Core 模块需要配置进程路径,所以我不能使用它。我唯一的其他想法是使用 ARR 和 URL 重写像常规反向代理一样设置 IIS:

<rule name="My Service" stopProcessing="true">
    <match url="myservice/(.*)" />
    <action type="Rewrite" url="http://localhost:5002/{R:1}" />
</rule>

但我想保留有用的功能,比如身份验证。有没有更好的办法?

标签: asp.net-coreiiswindows-serviceskestrel-http-server

解决方案


推荐阅读