2014-09-30 58 views
0

我正在使用wcf服務,我想根據父類別選擇返回子類別。通過get方法不工作在wcf服務中傳遞參數

這是我的接口:

[ServiceContract] 
    public interface iServiceRegistration 
    { 
     [OperationContract] 
     [WebInvoke(RequestFormat = WebMessageFormat.Json, BodyStyle =WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, Method = "GET")] 
    IEnumerable<SelectListItem> GetSubCategories(int categoryId); 
    } 

    public class Service : iServiceRegistration 
    { 
     public IEnumerable<SelectListItem> GetSubCategories(int categoryId) 
     { 
          //code 
     } 
    } 

我使用Mozilla瀏覽器的REST客戶端進行測試時,我打電話從其他客戶端這種方法是這樣這樣service.now:

{ 
"categoryId": "1" 
} 

然後0來自我的參數categoryId。

任何人都可以告訴我最新的問題?????

+0

嘗試:{「的categoryId」:1} – Fordio 2014-09-30 07:32:19

+0

沒有工作,我不這麼認爲問題是這樣的(意味着參數從靜止客戶端傳遞) – 2014-09-30 07:38:02

回答

1

指定的方法爲GET(作爲旁白,請勿使用[WebInvoke(Method = "GET")];請改爲使用[WebGet])。 GET請求中的參數在查詢字符串中傳遞,而不在請求正文中傳遞。您應該更改客戶端(REST客戶端)發送以下請求:

GET http://your-service/endpoint/GetSubCategories?categoryId=1 

或改變方法接受POST請求:

[WebInvoke(Method = "POST", 
      RequestFormat = WebMessageFormat.Json, 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStype = WebMessageBodyStyle.WrappedRequest)] 
IEnumerable<SelectListItem> GetSubCategories(int categoryId); 

而且在POST調用的身體發送請求:

POST http://your-service/endpoint/GetSubCategories 
Content-Type: application/json 
Content-Length: XXX 

{"categoryId":1} 
+0

+1您解釋,但我沒有足夠的投票點,並非常感謝你的答案 – 2014-10-01 05:05:52