2011-12-09 33 views
0

我們創建了一個WCF webservice。我們已經創建了兩個這樣的操作合同:如何在Restful Webservice中使用XmlSerializerFormat?

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和Post方法。這工作正常,但如果我想設置我的GET服務的響應格式,我必須使用XMLSERIALIZERFORMAT標記。如果我添加這個,然後嘗試打POST服務,我得到錯誤:400「錯誤的請求錯誤」。我應該如何在同一個服務中設置GET方法的響應。

我已經嘗試在項目中添加另一個服務'Service2.svc',我只保留了GET方法,'Service1.svc'只有POST服務。在Service2的界面中,我使用了XMLSERIALIZERFORMAT,但仍然無法打開POST服務。我想我必須使用DATACONTRACTSERIALIZER。但我不知道如何設置屬性。

任何人都可以請幫我解決這個問題嗎? 謝謝 Charan

回答

0

如果你想讓你的GET發送XML格式的響應,那麼你的GET方法下面的設置就足夠了。

ResponseFormat = WebMessageFormat.Xml 

您不需要使用XmlSerializerFormat。試着在IE瀏覽器中瀏覽你的服務,你會發現GET方法的響應是XML格式的。

關於在POST上獲取錯誤請求,請嘗試查看請求正文如何發送到您的方法。要查看您的請求主體,請嘗試使用Fiddler等工具來檢查您的請求和響應。要調試錯誤請求的原因,請嘗試在您的服務上啓用跟蹤。

How to enable tracing on your Service

相關問題