【发布时间】:2009-12-15 15:28:24
【问题描述】:
在我的 WCF 服务中,我只需要 1 个端点(1 个 URI),但是,我希望这个 URI 能够处理多种类型的请求。可以从另一家公司向此服务发送 5 种不同的请求类型。每个请求都有一个唯一的 XML 模式。
我为每个要序列化的 XML 请求创建了类。通常我只会在参数不同时重载一个函数....但是在这种情况下我不能这样做,因为我的 WCF 函数的 UriTemplate 是相同的,并且在我尝试运行应用程序时抛出错误(说 UriTemplate 必须是独一无二的)。
在每个 XML 请求中都有一个名为“requestType”的节点。我试图了解其他人会做什么......我应该自己序列化并忽略 DataContract 的内置序列化吗?我应该将我的函数设置为接受什么类型的参数...然后基于 requestType 分支到请求特定逻辑的 XMLDocument?
根据请求类型,此函数返回的 XML 也是唯一的....但是我无法从 OperationContract 返回 XMLDocument...引发更多错误(我认为是因为它说它不能被序列化)。
我尝试创建一个可以通过设置从所有请求类型序列化的类
IsRequired = false, EmitDefaultValue = false
...在不同请求类型之间不共享的对象的 DataMembers 上。我现在遇到了一个问题,必须为每个 DataMember 正确设置 Order ,否则它根本不会序列化到我的类对象中......我原以为不必设置 Order : /
编辑:
这就是我现在使用的... XML 已发布到我的服务。
[WebHelp(Comment = "comment")]
[WebInvoke(UriTemplate = "foobar",
Method = "POST",
BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
public ResponseType foobar(ReqeustType request)
...
测试时我会将 XML 发布到 http://localhost:4011/XMLWCF/Service.svc/foobar
【问题讨论】:
标签: xml wcf serialization xml-serialization