You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将WCF服务引用生成的类型/模型共享给Blazor WebAssembly客户端

Blazor WebAssembly 共享WCF生成模型的可实施方案

以下方案按推荐优先级排序:

方案1:抽离独立共享类库(最稳定,适合长期维护项目)

  • 在你的解决方案中新建一个同时兼容Web API和Blazor WASM的类库,优先选择和你项目主版本一致的.NET类库(比如全栈用.NET 8就建.NET 8类库,需要兼容旧版本可以选.NET Standard 2.1)
  • 进入后端Web API项目的Connected Services目录,找到对应WCF服务引用生成的代码文件,将其中纯数据模型定义的部分(不含WCF服务客户端、调用逻辑相关代码)剪切到新建的共享类库中,统一调整命名空间避免冲突
  • 分别给Web API项目、Blazor WASM项目添加对该共享类库的项目引用,两端即可直接使用同一套模型定义,无需重复编写
  • 如果后续WCF服务更新,只需要重新生成WCF引用后同步更新共享类库中的模型即可

方案2:共享类库直接托管WCF服务引用(适合WCF频繁迭代的场景)

  • 同样新建上述兼容的共享类库,直接在该类库中添加WCF服务引用,自动生成全量WCF相关代码
  • 后端Web API直接引用类库中的WCF客户端代码发起服务调用,Blazor WASM仅引用类库中的数据模型即可
  • WCF服务更新时只需要在共享类库中右键选择「更新服务引用」,两端自动同步模型变更,无需手动复制代码

注意:Blazor WASM运行时不支持WCF客户端的完整依赖,不要在Blazor端直接调用类库中的WCF客户端代码,所有WCF请求必须经由后端Web API转发

临时方案:手动对齐模型定义(仅适合模型极少、临时迭代的场景)

如果不想新增类库,可以在Blazor WASM项目中手动定义和WCF生成模型属性名、类型完全一致的类,System.Text.Json默认支持自动匹配序列化结果,WCF生成模型带有的[DataContract]、[DataMember]特性也可以被默认识别,仅需要在Web API的JSON序列化配置中按需开启对数据协定特性的支持即可,该方案维护成本较高,模型变更时需要两端同步修改。

常见坑点提示:如果遇到序列化后属性值为空的问题,可以检查Web API的序列化配置是否开启了JsonSerializerOptions.IncludeFields = true,部分WCF生成的模型会用字段而非属性存储数据。

内容的提问来源于stack exchange,提问作者zzazaya brau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:18:02