gRPc (C#) 对 IIS Windows Server 2019 的支持

问题描述 投票:0回答:1

我正在努力转换我的一些 WCF 项目。是否可以将 gRPC 连接到 Windows Server 2019?我在 GitHub 存储库上读到它适用于 2022 年以上;然而这个问题是几年前提出的。

首先,我使用了 Visual Studio 中 gRPC 服务项目附带的默认项目(Greeter)。


————-
Web service settings
————-

using Server;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddGrpc();

var app = builder.Build();
app.MapGrpcService<GreeterService>();

app.Run();

// kestrel settings in appsettings set to Http1AndHttp2

————-
Proto
—————
syntax = "proto3";

package greet;

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply);
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}


——————-
service
——————-

using System.Threading.Tasks;
using Greet;
using Grpc.Core;
using Microsoft.Extensions.Logging;

namespace Server
{
    public class GreeterService : Greeter.GreeterBase
    {
        private readonly ILogger _logger;

        public GreeterService(ILoggerFactory loggerFactory)
        {
            _logger = loggerFactory.CreateLogger<GreeterService>();
        }

        public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
        {
            _logger.LogInformation($"Sending hello to {request.Name}");
            return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
        }
    }
}

我在本地和远程计算机上创建了网站,并尝试使用 Postman 进行测试。在本地它工作正常并且我得到响应。我在本地和远程都设置了 https,并且认证看起来不错。

但是在远程计算机(Windows Server 2019)上运行 Postman;我收到“13 内部”错误。

我已经检查了 IIS 的两个设置并确保 ASPNET 版本匹配,但没有那么幸运。

邮递员:

  • 网址:https://localhost/WSGreeter
  • 方法:SayHello

本地机器:

  • Windows 11
  • IIS 10
  • 网站使用https

远程:

  • Windows Server 2019
  • IIS 10
  • 网站使用https

就像我说的,我可以在浏览器上访问 https://localhost/WSGreeter 进行本地和远程访问,两者都可以正常工作;没问题。

我的想法是它仍然与 Windows Server 2019 有关。

想知道是否有人找到了使其适用于此版本的 Windows Server 的解决方案。如果是这样;你能提供一下你做了什么吗?

c# .net grpc iis-10 windows-server-2019
1个回答
0
投票

官方文档中提到 gRPC 支持 Windows 11 Build 22000 或更高版本、Windows Server 2022 Build 20348 或更高版本。

https://learn.microsoft.com/en-us/aspnet/core/grpc/aspnetcore?view=aspnetcore-8.0&tabs=visual-studio#iis

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/protocols?view=aspnetcore-9.0#advanced-http2-features-to-support-grpc

如果您对 revsre 代理感兴趣,您可以安装 ARR 和 url 重写并设置 revse 代理规则。

https://techcommunity.microsoft.com/blog/iis-support-blog/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world-apps/846222

 <rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://destination url/{R:1}" />
            </rule>
        </rules>
    </rewrite>
© www.soinside.com 2019 - 2024. All rights reserved.