VS16.7.6运行GrpcHostServer报MissingMethodException的原因及解决办法
Grpc项目MissingMethodException异常原因及修复方案
异常详情
System.MissingMethodException: 'Method not found: 'Microsoft.AspNetCore.Builder.IEndpointConventionBuilder Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithDisplayName(Microsoft.AspNetCore.Builder.IEndpointConventionBuilder, System.String)'.'
触发原因
- 根本原因是ASP.NET Core运行时版本不兼容:
RoutingEndpointConventionBuilderExtensions.WithDisplayName扩展方法是ASP.NET Core 3.1.8及更高版本才新增的API,Visual Studio 2019 16.7.6内置的ASP.NET Core SDK版本低于3.1.8,运行时找不到对应方法实现就会抛出该异常。 - 你运行的GrpcHostServer项目依赖的
Grpc.AspNetCore包版本较高,内部会调用这个新增API,和本地低版本ASP.NET Core运行时不匹配,最终触发错误。
修复方案
你可以任选以下任意一种方案解决:
方案1:升级本地运行环境
- 单独下载安装ASP.NET Core 3.1.8或更高的3.1.x版本SDK,安装完成后重启Visual Studio,重新生成项目即可运行,无需修改项目代码。
- 也可以直接将Visual Studio 2019升级到16.8及以上版本,新版本会自带符合要求的高版本ASP.NET Core SDK,同时兼容现有Grpc项目的依赖配置。
方案2:降级项目Grpc依赖版本
- 打开项目的NuGet包管理界面,将
Grpc.AspNetCore包降级到2.32.0及以下版本,该版本的Grpc组件不会调用新增的WithDisplayName方法,可兼容低版本ASP.NET Core运行时。 - 降级完成后执行
清理解决方案->重新生成解决方案操作,再启动项目即可恢复正常。
内容的提问来源于stack exchange,提问作者Борис Яницкий
相关产品推荐
相关产品推荐

