.NET调用GRPC出现 Bad gRPC response. Response protocol downgraded to HTTP/1.1.

部署运行你感兴趣的模型镜像

确认系统有无代理

如果开了代理,需关掉,

确认包版本

如果你使用的不是最新的,net版本需注意包的版本
我这里以.net 5为例
可以看到Grpc.Net.Client包中从2.57版本后就没有.net5依赖项了
在这里插入图片描述
所以要保持版本在2.56,同理Grpc.Net.ClientFactory
这个问题困扰了我一天🤣🤣🤣🤣 记录一下

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

在使用 `grpc_reflection` 模块进行 gRPC 服务的反射查询时,开发者可能会遇到如下异常: ``` AttributeError: 'NoneType' object has no attribute 'message_types_by_name' ``` 该错误通常发生在尝试访问 gRPC 服务描述信息时,某些预期存在的字段或对象未被正确初始化,导致其值为 `None`。以下是一些可能的原因及对应的解决方案: ### 1. 服务未正确注册或未启动 在进行反射查询之前,如果 gRPC 服务尚未正确注册或未启动,可能会导致服务描述信息为空,从而引发该异常。确保在调用反射接口之前,服务已经通过 `add_<ServiceName>_to_server` 方法注册,并且服务器已启动。 ```python server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) your_service_pb2_grpc.add_YourServiceServicer_to_server(YourService(), server) server.add_insecure_port('[::]:50051') server.start() ``` 确保服务启动后再进行反射查询[^1]。 --- ### 2. 反射请求的目标服务未正确配置 在使用 `ServerReflection` 客户端时,如果请求中指定的服务名称不正确或服务未启用反射支持,也可能导致此错误。请确保客户端请求的服务名称与服务端注册的名称一致,并且服务端已正确启用反射。 ```python from grpc_reflection.v1alpha import reflection service_names = ( your_service_pb2.DESCRIPTOR.services_by_name['YourService'].full_name, reflection.SERVICE_NAME, ) server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) reflection.enable_server_reflection(service_names, server) ``` 上述代码中,`your_service_pb2.DESCRIPTOR.services_by_name` 用于获取服务描述符,如果服务名称拼写错误或未定义,可能导致 `None` 被返回,从而引发异常。 --- ### 3. protobuf 版本或 gRPC 包版本不兼容 某些版本的 `protobuf` 或 `grpcio`、`grpcio-reflection` 库之间可能存在兼容性问题。建议使用以下版本组合进行测试: ```bash pip install protobuf==3.20.1 pip install grpcio==1.59.0 pip install grpcio-reflection==1.59.0 ``` 如果问题仍然存在,可以尝试更新到最新稳定版本,或回退到已知兼容的版本[^1]。 --- ### 4. 网络通信失败或服务未响应 如果 gRPC 服务端未正常运行或网络连接异常,反射请求可能无法获取有效的响应,导致解析失败。可以通过以下方式验证服务是否可达: ```python import grpc from grpc_reflection.v1alpha import reflection_pb2, reflection_pb2_grpc channel = grpc.insecure_channel('localhost:50051') stub = reflection_pb2_grpc.ServerReflectionStub(channel) response = stub.ServerReflectionInfo(iter([reflection_pb2.ServerReflectionRequest( host='localhost', file_containing_symbol='your.package.YourService' )])) ``` 如果上述代码抛出连接异常,则应检查服务是否运行、端口是否开放、防火墙设置等。 --- ### 总结 解决 `AttributeError: 'NoneType' object has no attribute 'message_types_by_name'` 的关键是确保 gRPC 服务已正确注册并运行,服务名称匹配,protobuf 和 gRPC 库版本兼容,并且网络通信正常。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值