在 IIS 中部署和运行 .NET gRPC 服务需要几个关键步骤,确保你的环境正确配置,并且你的 gRPC 服务能够通过 HTTP/2 协议进行通信。

以下是详细的指南:
1. 环境准备
.NET 版本: 确保你使用的是 .NET 5 或更高版本,因为 gRPC 在 IIS 上的托管需要这些版本。
Windows Server 版本: 推荐使用 Windows Server 2022 或更高版本,或者 Windows 11。这些操作系统版本对 HTTP/2 有更好的支持。
IIS 配置:
确保你的 IIS 安装了必要的组件,包括 ASP.NET Core 模块。
配置 IIS 以支持 HTTP/2 和 TLS。gRPC 通常通过 HTTP/2 进行通信,而 HTTP/2 需要 TLS 加密。
2. 配置 IIS 以支持 HTTP/2 和 TLS
安装和配置 TLS/SSL 证书:
你需要一个有效的 SSL 证书。你可以从证书颁发机构(CA)购买证书,或者使用自签名证书进行测试。
在 IIS 中,将证书绑定到你的网站。
启用 HTTP/2:
确保你的 Windows Server 版本支持 HTTP/2。
通常,如果你的 IIS 配置了 TLS,HTTP/2 会自动启用。你可以通过检查 IIS 日志来验证 HTTP/2 是否正在使用。
3. 安装.NET Core IIS托管捆绑包(可选)
是否需要安装 .NET Core IIS 托管捆绑包(.NET Core Hosting Bundle)取决于你的部署方式和服务器环境。
自包含部署(Self-contained Deployment):如果你选择自包含部署方式,应用程序将包含运行所需的 .NET 运行时和库,因此无需在服务器上安装 .NET Core IIS 托管捆绑包。
框架依赖部署(Framework-dependent Deployment):如果你选择框架依赖部署方式,服务器需要安装适当版本的 .NET 运行时和 .NET Core IIS 托管捆绑包,以支持应用程序的运行。如果你的服务器会部署其他.NET Core服务,建议安装,NET Core IIS托管捆绑包。
4. 发布 .NET gRPC 服务
发布应用程序:在 Visual Studio 中,右键单击你的 gRPC 项目,然后选择“发布”。选择“文件夹”发布目标,并选择一个本地文件夹来存储发布的文件。
将发布的文件复制到 IIS 站点目录:将发布文件夹中的所有文件复制到你的 IIS 站点目录。
5. 在 IIS 中配置 gRPC 站点
创建新的网站或应用程序:在 IIS 管理器中,创建一个新的网站或应用程序,指向你复制的 gRPC 服务文件所在的目录。配置网站或应用程序的绑定,确保它使用 HTTPS 和正确的端口。
配置应用程序池:确保应用程序池的 .NET CLR 版本设置为“无托管代码”,因为 ASP.NET Core 应用程序使用自己的运行时。
配置 web.config 文件:确保你的 web.config 文件包含正确的 ASP.NET Core 模块配置。
6. 常见问题
- 检查 IIS 日志:IIS 日志文件可以提供有关任何错误或问题的宝贵信息。
- 使用 gRPC 客户端进行测试:使用 gRPC 客户端工具(如 grpcurl)来测试你的 gRPC 服务是否可以正常访问。如果客户端报错,Error starting gRPC call. HttpRequestException: An HTTP/2 connection could not be established because the server did not complete the HTTP/2 handshake. ,请检查IIS是否支持HTTP2,站点是否安装证书使用https访问。
- 确保防火墙端口开放:需要确保你的服务器防火墙开放了你设置的端口。
gRPC 在 IIS 上的托管可能比在 Kestrel 等独立服务器上更复杂。确保你了解 HTTP/2 和 TLS 的工作原理,以便正确配置你的环境。
希望这些步骤能帮助你在 IIS 中成功部署和运行 .NET gRPC 服务。