Blazor MAUI添加Razor Class Library引用报错,涉WebApi兼容性问题
解决思路
1. 替换旧版WebApi兼容包
你遇到的NU1701警告核心是Microsoft.AspNet.WebApi.Core 5.2.9是.NET Framework专属包,和Blazor MAUI的跨平台目标框架(net7.0-android等)不兼容。直接替换为ASP.NET Core生态的包:
- 卸载RCL中的
Microsoft.AspNet.WebApi.Core - 安装
Microsoft.AspNetCore.Mvc.WebApiCompatShim(用于兼容旧WebApi路由逻辑),或者直接基于ASP.NET Core的HttpClient实现API调用,完全抛弃旧WebApi包依赖。 - 调整RCL中API调用的代码,适配新的包(比如用
HttpClient.SendAsync替代旧WebApi的HttpClient.PostAsJsonAsync这类专属方法)。
2. 隔离API调用逻辑
把RCL中依赖WebApi包的API调用逻辑抽离到独立的类库项目(目标框架设为.NET Standard 2.0或net7.0),这个类库仅用HttpClient实现API请求,不依赖任何旧.NET Framework包。
- RCL只引用这个独立的API客户端类库
- Blazor Server和Blazor MAUI分别在各自的服务容器中注册这个API客户端服务,即可复用逻辑同时避开兼容性问题。
3. 临时忽略警告(不推荐用于生产)
如果只是临时测试功能,可以在MAUI项目的.csproj文件中添加配置忽略NU1701警告,但可能引发运行时异常:
<PropertyGroup> <NoWarn>NU1701</NoWarn> </PropertyGroup>
4. 适配授权逻辑
若RCL中使用了旧WebApi的授权组件(比如System.Web.Http.AuthorizeAttribute),这类组件在MAUI中无法正常工作,需要替换为ASP.NET Core的授权体系:
- 改用
Microsoft.AspNetCore.Authorization中的[Authorize]特性 - 针对MAUI的身份认证场景,使用适配移动端的认证库(比如Microsoft.Identity.Client)实现授权逻辑,确保和Blazor Server的授权逻辑一致但适配MAUI环境。
内容的提问来源于stack exchange,提问作者user13714356
相关产品推荐
相关产品推荐

