Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的gRPC测试项目只在本地主机上工作_C#_.net_Grpc - Fatal编程技术网

C# 我的gRPC测试项目只在本地主机上工作

C# 我的gRPC测试项目只在本地主机上工作,c#,.net,grpc,C#,.net,Grpc,我有以下问题 我创建了一个gRpc服务器(控制台应用程序.Net 4.7.2-由于Crystal Reports:()和一个客户端(WPF应用程序.Net Core 3.1),只要服务器和客户端在我的机器上(Windows 10),我就可以运行它。至于我将服务器转移到另一台机器(Windows Server 2016),它就不再工作了 这是RPC异常: 状态(StatusCode=“不可用”,Detail=“无法连接到所有 地址“, DebugException=“Grpc.Core.Inter

我有以下问题

我创建了一个gRpc服务器(控制台应用程序.Net 4.7.2-由于Crystal Reports:()和一个客户端(WPF应用程序.Net Core 3.1),只要服务器和客户端在我的机器上(Windows 10),我就可以运行它。至于我将服务器转移到另一台机器(Windows Server 2016),它就不再工作了

这是RPC异常:

状态(StatusCode=“不可用”,Detail=“无法连接到所有 地址“, DebugException=“Grpc.Core.Internal.CoreErrorDetailException: {“已创建”:“@1595508082.170000000”,“说明”:“拾取失败” 子通道,“文件”:“T:\src\github\grpc\workspace\u csharp\u ext\u windows\u x64\src\core\ext\filters\client\u channel\client\u channel.cc”,“文件行”:3948,“引用的错误”:[{“已创建”:“@1595508082.170000000”,“说明”:“失败” 连接到所有 地址,“文件”:“T:\src\github\grpc\workspace\u csharp\u ext\u windows\u x64\src\core\ext\filters\client\u channel\lb\u policy\pick\u first\pick\u first.cc”,“文件行”:394,“grpc\u状态:14}”)

我尝试了所有变体。以下是我在localhost上运行的最新代码:

服务器:

static void Main(string[] args)
    {
        var cacert = File.ReadAllText(@"root.crt");
        var servercert = File.ReadAllText(@"server.crt");
        var serverkey = File.ReadAllText(@"server.key");
        var keypair = new KeyCertificatePair(servercert, serverkey);
        var sslCredentials = new SslServerCredentials(new List<KeyCertificatePair>() { keypair }, cacert, false);

        // Build a server
        var server = new Server
        {
            Services = { ReportService.BindService(new KKarteReportService()) },
            Ports = { new ServerPort(Host, Port, sslCredentials) }
        };


        // Start server
        server.Start();

        Console.WriteLine("KKarteReport Server listening on port " + Port);
        Console.WriteLine("Press any key to stop the server...");
        Console.ReadKey();

        server.ShutdownAsync().Wait();
    }
static void Main(字符串[]args)
{
var cacert=File.ReadAllText(@“root.crt”);
var servercert=File.ReadAllText(@“server.crt”);
var serverkey=File.ReadAllText(@“server.key”);
var keypair=newkeycertificatePair(servercert,serverkey);
var sslCredentials=新的SslServerCredentials(新列表(){keypair},cacert,false);
//构建服务器
var server=新服务器
{
Services={ReportService.BindService(新的kkarteportservice())},
端口={new ServerPort(主机、端口、sslCredentials)}
};
//启动服务器
server.Start();
Console.WriteLine(“KKarteReport服务器侦听端口”+端口);
Console.WriteLine(“按任意键停止服务器…”);
Console.ReadKey();
server.shutdownsync().Wait();
}
客户

var cacert = File.ReadAllText(@"root.crt");
var clientcert = File.ReadAllText(@"client.crt");
var clientkey = File.ReadAllText(@"client.key");
var ssl = new SslCredentials(cacert, new KeyCertificatePair(clientcert, clientkey));
           
 var options = new List<ChannelOption> { new ChannelOption(ChannelOptions.SslTargetNameOverride, "MyServerHost") }; 
 var channel = new Channel("12.20.18.11", 5001, ssl, options);
 //var channel = new Channel("localhost", 5001, ssl, options);
 //var channel = new Channel(url, ChannelCredentials.Insecure);
 var client = new ReportService.ReportServiceClient(channel);

  using var streamingCall = client.CreateAusschreibung(request);

  await using var ms = new MemoryStream();

  while (await streamingCall.ResponseStream.MoveNext())
  {
        ms.Write(streamingCall.ResponseStream.Current.FileChunk.ToByteArray());
  }
var cacert=File.ReadAllText(@“root.crt”);
var clientcert=File.ReadAllText(@“client.crt”);
var clientkey=File.ReadAllText(@“client.key”);
var ssl=新的SslCredentials(cacert,新的密钥证书Pair(clientcert,clientkey));
var options=new List{new ChannelOption(ChannelOptions.SslTargetNameOverride,“myserver主机”)};
var通道=新通道(“12.20.18.11”,5001,ssl,选项);
//var通道=新通道(“本地主机”,5001,ssl,选项);
//var channel=新频道(url,ChannelCredentials.unsecure);
var client=new ReportService.ReportServiceClient(通道);
使用var streamingCall=client.CreateAusschreibung(请求);
使用var ms=new MemoryStream()等待;
while(等待streamingCall.ResponseStream.MoveNext())
{
ms.Write(streamingCall.ResponseStream.Current.FileChunk.ToByteArray());
}

我遗漏了什么?

服务器端的“主机”变量包含什么?问题可能是地址绑定不正确,这会阻止从本地主机以外的IP地址访问服务(127.0.0.1)。请尝试在那里输入0.0.0.0。

如果这看起来太明显,很抱歉,但由于我在过去遇到过类似的服务器/客户端问题,我认为可以这样问:您是否检查了两侧的防火墙配置?是的,检查了多次。如果我在这个端口上使用wcf服务或老式rpc调用,它会工作……Http2是防火墙的要求r HTTP2需要gRPC和Https。请尝试将上下文切换到
Http2UnencryptedSupport
,将
Http2Support
切换到false。@MujahidDaudKhan您的意思是我需要在我的wpf客户端或服务器端执行此操作,还是同时在服务器端执行此操作?我对gRPC的内容非常陌生,必须将服务器设置为NET4.7.2和客户端wpf Core 3.1。您能设置吗具有以下要求的正在运行的testproject?:)@blindmeis仅在客户端上运行。出于测试目的,您可以使用