首页 > 解决方案 > 为什么 grpc 在 IIS 上以 403 响应

问题描述

我正在尝试使用 gRPC 在我在 asp.net 核心中构建的后端应用程序之间进行通信。当我离线尝试我的应用程序时,它工作正常并且我得到每个请求的响应问题是当我将服务器应用程序上传到 IIS 并尝试发送一个请求它响应 403 bad gRPC response

我的代码很简单现在我只是在搞乱asp核心中已经制作的例子。这是我的问候服务

 public class GreeterService : Greeter.GreeterBase
{
    private readonly ILogger<GreeterService> _logger;
    public GreeterService(ILogger<GreeterService> logger)
    {
        _logger = logger;
    }

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

这是原型文件

syntax = "proto3";

option csharp_namespace = "GrpcService1";

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;
}

这是发送请求的客户端

 static async Task Main(string[] args)
    {
        // The port number(5001) must match the port of the gRPC server.
        using var channel = GrpcChannel.ForAddress("https://grpc.something.com");
        var client = new Greeter.GreeterClient(channel);
       
        var reply = await client.SayHelloAsync(
            new HelloRequest { Name = "GreeterClient" });
        Console.WriteLine("Greeting: " + reply.Message);
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }

有人知道为什么会这样吗?

标签: c#iis.net-coremicroservicesgrpc-c#

解决方案


推荐阅读