能否复用自定义MessageContract类?WCF客户端代理重复生成类问题
WCF MessageContract类型客户端代理不重用已有类的解决方法
严格匹配命名空间:检查独立项目里
JournalTransactionRequestInfo类的命名空间,和客户端生成代理时自动创建的类命名空间是否完全一致。WCF对类型匹配的判断依赖精确的命名空间,哪怕大小写、后缀差异都会导致无法重用已有类型。显式配置MessageContract的Name与Namespace:给
JournalTransactionRequestInfo类的MessageContractAttribute显式指定Name和Namespace属性,确保服务端和客户端的定义完全对齐。示例代码:[MessageContract(Name = "JournalTransactionRequestInfo", Namespace = "http://your-custom-namespace/contracts")] public class JournalTransactionRequestInfo { [MessageHeader] public string RequestId { get; set; } [MessageBodyMember] public TransactionDetail Detail { get; set; } }验证程序集版本一致性:客户端项目引用的包含MessageContract类的独立程序集,必须和服务端使用的是同一版本。版本号不匹配时,WCF会判定为不同类型,进而重新生成类。
使用svcutil命令行强制重用类型:如果可视化添加服务引用的选项未生效,改用svcutil命令行工具,通过
/reference参数指定要重用的程序集。示例命令:svcutil.exe http://your-service-host/Service.svc /reference:YourMessageContractAssembly.dll /out:ServiceProxy.cs /config:App.config确认类型的可访问性:
JournalTransactionRequestInfo类必须是public修饰的,同时类中被MessageHeader、MessageBodyMember标记的成员也需保持公共可访问性,否则WCF无法识别并重用该类型。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

