添加ASP.NET Core Web API时遇System.ServiceModel加载异常求助
问题分析与解决方案
问题根源
你使用的Microsoft.AspNet.WebApi.OwinSelfHost是**传统ASP.NET(非Core)**的自托管包,和ASP.NET Core框架完全不兼容。该包依赖.NET Framework专属的WCF组件(System.ServiceModel系列),而ASP.NET Core基于.NET Core/.NET 5+运行时,两者依赖体系不匹配,因此会出现一系列程序集缺失、类型加载失败的错误。
正确解决方案:使用ASP.NET Core原生自托管方式
ASP.NET Core自带完整的Web API自托管能力,无需依赖旧版ASP.NET的包,步骤如下:
适配项目类型:如果是现有非ASP.NET Core项目(如控制台应用),需添加ASP.NET Core相关依赖;如果是新项目,直接创建
ASP.NET Core Web API模板项目。编写自托管代码:
var builder = WebApplication.CreateBuilder(args); // 注册Web API服务 builder.Services.AddControllers(); var app = builder.Build(); // 配置请求管道 app.UseRouting(); app.UseAuthorization(); // 映射API控制器路由 app.MapControllers(); // 启动服务,监听指定端口 app.Run("http://localhost:8080");依赖说明:ASP.NET Core 6+项目默认已包含
Microsoft.AspNetCore.App元包,无需额外安装其他组件;若为更早版本,需手动添加该元包引用。
旧方法不可行的原因
HttpSelfHostConfiguration属于旧版ASP.NET Web API(System.Web.Http)的API,绑定.NET Framework的WCF运行时组件。ASP.NET Core是完全重构的跨平台框架,不兼容这些.NET Framework专属的API和依赖,强行混用必然导致依赖冲突与加载失败。
内容的提问来源于stack exchange,提问作者user5405648
相关产品推荐
相关产品推荐

