当前位置: 首页 > news >正文

c# grpc

asp.net 程序安装nuget包: Grpc.AspNetCore,  Grpc.AspNetCore.Server.Reflection

修改 program 设置:

<ItemGroup>
<Protobuf Include="**/*.proto" OutputDir="Protos" CompileOutputs="false" GrpcServices="Server" />
</ItemGroup>

添加 proto 文件:

syntax="proto3";
option csharp_namespace ="MyProject.Protos";
package MyProject;service MyAuth{// 登录
    rpc Login (LoginRequest) returns (LoginReply);
}messageLoginRequest{string LoginName = 1;string Pwd = 2;
}message LoginReply{int32 Code = 1;string Msg = 2;
}

添加服务:

    public class MyAuthService : MyAuth.MyAuthBase{public override async Task<LoginReply> Login(LoginRequest req, ServerCallContext context){return  new LoginReply() ;}}

 program.cs:

    public class Program{public static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);builder.Services.AddControllersWithViews();builder.Services.AddGrpc();//builder.Services.AddGrpcReflection();builder.Services.AddRazorPages();var app = builder.Build();app.MapGrpcReflectionService().AllowAnonymous();app.MapGrpcService<HospitalService>();if (!app.Environment.IsDevelopment()){app.UseExceptionHandler("/Error");
                app.UseHsts();}app.UseHttpsRedirection();app.UseStaticFiles();app.UseRouting();app.UseAuthorization();app.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");app.MapControllers();app.MapRazorPages();
            app.Run();}}

 

 

 

客户端配置:

添加nuget引用:Grpc.Net.Client, Grpc.Tools

添加服务期配置的proto文件,在program中设置:  

<Protobuf Include="Protos\myauth.proto" GrpcServices="Client" />

调用服务:

      private static void GetJWT(){using (var channel = GrpcChannel.ForAddress("https://localhost:443/", new GrpcChannelOptions()//没有正式的证书时,需要配置options{HttpHandler = new HttpClientHandler{ ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }})){var client = new MyAuth.MyAuthClient(channel);LoginRequest req = new LoginRequest() { LoginName = "", Pwd = "" };var reply = client.Login(req);Console.WriteLine($"{JsonConvert.SerializeObject(reply)}");}}

 

http://www.wxhsa.cn/company.asp?id=7597

相关文章:

  • win10任务栏频繁卡死、转圈
  • Typora Markdown 编辑快捷键大全(优化补充版)
  • 第二届数字经济与计算机科学国际学术会议(DECS 2025)
  • 文件摆渡系统案例分享:医院如何构建高效内外网文件交换通道
  • 淘天一面
  • 利用小波变换对跳频信号进行参数估计
  • 【Qt】Window环境下搭建Qt6、MSVC2022开发环境(无需提前安装Visual Studio) - 实践
  • 编写测试用例技巧
  • 牛客刷题-Day1
  • TENGJUN防水TYPE-C 16PIN连接器技术解析:从结构设计到认证标准的全面解读 - 实践
  • 第三届人工智能与自动化控制国际学术会议(AIAC 2025)
  • 图纸安全外发平台全解析
  • webshell流量 - voasem
  • 软件测试分类
  • Linux下显卡驱动简单测试
  • 大模型三阶段训练方法(LLaMa Factory)
  • 算法与数据结构 8 - 线性筛求一般积性函数
  • SpringMVC使用jasypt加密配置文件 - Commissar
  • 三行Python代码实现深度学习推理:Infery全面解析
  • 基于Python+Vue开发的口腔牙科预约管理系统源码+运行步骤
  • 网页禁止复制
  • 混元开源之力:spring-ai-hunyuan 项目功能升级与实战体验
  • ECT-OS-JiuHuaShan 框架实现元推理,是人类文明的金种子
  • MATLAB实现连续投影算法
  • PS辉光眩光特效插件 BBTools Glow Glare 2 V2.4.3 For Photoshop
  • 内外网文件摆渡工具怎么选的实用指南
  • SAP 文件上传方式导入上、下限
  • 拓展坞相关问题
  • 深入解析:第 9 篇:深入浅出学 Java 语言(JDK8 版)—— 吃透泛型机制,筑牢 Java 类型安全防线
  • 鸿蒙应用开发从入门到实战(八):ArkTS自定义组件语法