如何在Restful Webservice中使用XmlSerializerFormat?

时间:2011-12-09 06:14:21

标签: wcf

我们已经创建了一个WCF Web服务。我们创建了两个这样的操作合同:

public interface IRestServiceImpl
{
      [OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Xml,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "getID/{id}")]
    File getID(string id);

    [OperationContract]
    [WebInvoke(Method = "POST",
        ResponseFormat = WebMessageFormat.Xml,
        RequestFormat = WebMessageFormat.Xml,
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "auth")]
    ResponseData Auth(RequestData rData);   }

正如您所看到的,我有一个Get and Post方法。这工作正常,但如果我想设置我的GET服务的响应格式,我必须使用XMLSERIALIZERFORMAT标记。如果我添加这个然后尝试点击POST服务,我得到错误:400“错误的请求错误”。我应该如何在同一服务中设置我的GET方法的响应。

我尝试在项目中添加另一项服务'Service2.svc',我只保留GET方法,而'Service1.svc'只有POST服务。在Service2的界面中,我使用了XMLSERIALIZERFORMAT,但仍然无法点击POST服务。我想我必须使用DATACONTRACTSERIALIZER。但我不知道如何设置属性。

任何人都可以帮我解决这个问题吗? 谢谢 查兰

1 个答案:

答案 0 :(得分:0)

如果您希望GET以XML格式发送响应,那么GET方法的下面设置就足够了。

ResponseFormat = WebMessageFormat.Xml 

您不需要使用XmlSerializerFormat。只是尝试浏览IE中的服务,您应该看到GET方法的响应是XML格式。

关于在POST上获取错误请求,请尝试查看请求正文如何发送到您的方法。要查看您的请求正文,请尝试使用Fiddler等工具来检查您的请求和响应。要调试错误请求的原因,请尝试在服务上启用跟踪。

How to enable tracing on your Service