这是我的设置:
错误="HTTP/2 over TLS未在仅HTTP/2endpoint上协商。"
所以…其他人实现了这个Grpc服务器(E)。我可以在两个应用程序中调用这个。没有错误。
但为了获得一个良好的开发环境来开发这两个应用程序,我从生产服务器获得了proto文件,并开发了自己的实现(D)。我使用它来测试客户端中的错误处理-我可以控制服务器给出的响应。
我实现了两个完全相同的单元测试,它们实际上是集成测试。一个在. net framework项目中,一个在. net核心项目中。
它适用于。net核心测试,但不是。net框架。
但是,如果我注入WinHttpHandler
而不是HttpClientHandler
,那么它就可以工作。我真的不想注入处理程序(它甚至不是一个接口)。
如前所述,生产gRPC服务器也可以工作。但我不知道为什么我的失败和生产gRPC服务器工作。
我认为我自己对gRPC服务的实现是错误的(或缺乏的),但是我不知道我错过了什么。
请帮忙!
实际上,我在我的appsetting.json中有这个(我从另一个项目复制的):
"Kestrel": {
"EndpointDefaults": {
"Protocols": "Http2"
}
当然,从文件中删除它解决了我的问题。
Grpc.Net.Client只适用于. NET Framework(与. NET Core和. NET5相反),但有限制。原因是. NET Framework没有真正的HTTP/2实现,这是gRPC协议的要求(但不是grpc-web,它是您的一个选项)。
Grpc.Net。客户机在某种程度上使用WinHttpHandler在.NET框架上工作(正如您所发现的)。此处记录了这些限制:
下面的代码正在工作。NET框架(4.5-4.8)。但是它在所有的版本中都失败了。NET Core,其中包含一条消息"收到的消息是意外的或格式错误的"。我已经尝试了所有SSL协议。 我正在使用控制台应用程序和核心应用程序没有任何额外的包。我也在使用相同的操作系统,相同的VS 2019在相同的系统。NET框架和.NET核心。它也与POSTMAN\SOAPUI一起工作。
我有一个用。NET核心实现的gRPC服务器,我希望与运行在。NET Framework中的控制台应用程序联系。 我在发送请求时得到以下异常: rpc.core.rpcexception:'statuscode=“不可用”,detail=“DNS解析失败服务:https://localhost:5001”,debugexception=“grpc.core.internal.coreerrordet
我读过关于.NET标准和.NET核心之间的区别,但我真的不知道区别是什么,也不知道什么时候选择.NET标准库项目,什么时候选择.NET核心库项目。
遵循以下文档:https://docs.microsoft.com/fr-fr/aspnet/core/grpc/authn-and-authz?view=aspnetcore-3.0#承载令牌身份验证,我尝试配置我的GRPC客户端以自动注入JWT令牌。 但它被Grpc.Core中的一个例外“提供的通道凭据不允许组合”窒息 这是什么意思?我应该如何提供HTTP授权标头?
我正在尝试通过刷新令牌和JWT在. NET Core 2.1中实现基于令牌的身份验证。 这就是我实施JWT令牌的方式: 启动.cs 令牌生成: 我正在给他回复正确的数值。 但是一分钟后,我在 Postman 中为授权设置了相同的令牌,它可以工作。如果令牌已过期,则不应过期。 我使用不记名令牌作为认证。 我做错了什么?需要方向。
我已经看了很长一段时间了,在互联网上浏览了所有不同的帖子,看看是否能找到有相同问题的人,但不知为什么,我似乎是唯一有这个问题的人。 我有一个ASP。net核心服务器,运行Grpc的基本迎宾服务。使用程序“BloomRPG”调用此服务器效果很好,而且响应时间也很长。然而,当我试图从自己编写的(非常基本的)客户机上执行同样的操作时,我会遇到以下错误: 在客户机上: dbug:Grpc。网客户内部的Gr