[英]WCF Rest Change name of root return element
我有
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Xml,
RequestFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "projects/{projectname}")]
[return: MessageParameter(Name = "ProjectId")]
Guid CreateProject(String projectName);
但这仍然返回
<guid
xmlns="http://schemas.microsoft.com/2003/10/Serialization/">00000000-0000-0000-0000-00000000</guid>
如何用ProjectId替换“ guid”?
public Guid CreateProject(String projectName)
{
return Guid.Empty;
}
如果将OperationContract BodyStyle更改为WrappedResponse, WrappedResponse
得到:
<CreateProjectResponse
xmlns="http://tempuri.org/">
<ProjectId>00000000-0000-0000-0000-000000000</ProjectId>
</CreateProjectResponse>
这几乎是我想要的,但是我不需要不必要的包装。
您将成为定义的对象。 您已定义为接收XML形式的空GUID,并且它将返回给您XML形式的空GUID。 没事。
也许您需要将GUID转换为某种字符串ID,然后再Guid.NewGuid().ToString("N")
当您不期望使用xml时,则需要调整属性并从客户端使用HTTP Accept Header,例如,对于Json Accept: application/json
或string- plain/text
UPD:现在有点清楚了。 您实际上问过如何更改XML结构。 我建议您为标准类型使用标准XML结构,因为您已经从框XML格式器中实现了。 无论如何,当您需要更改格式化程序时,都可以通过扩展WebHttpBehavior
并重写WebHttpBehavior.GetReplyDispatchFormatter
方法来返回我们自己的System.ServiceModel.Dispatcher.IDispatchFormatter自定义实现(例如, 在此处阅读)
我还想提一提,您正在使用WCF 4 REST,而这项技术是旧的。 当您不处理遗留项目或维护时,我建议您使用ASP.NET Web API ,因为这样做和执行许多其他操作会更容易。
最简单的解决方案是
return new XElement("ProjectId", Guid.Empty);
并不是我真正想要的,但是可以。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.