2014-01-15 11 views
0

我已經創建了一個WCF數據服務,它工作正常。我的自定義方法是GET類型的方法也可以。問題出在POST自定義方法中。WCF數據服務 - 自定義POST方法

的方法看起來像這樣:

[WebInvoke(Method = "POST")] 
    public string CustomMethod(string myParameter) 
    { 
     return "yes" + myParameter; 
    } 

我也調用:

config.SetServiceOperationAccessRule("CustomMethod", ServiceOperationRights.All); 

然後在提琴手我的要求看起來像這樣:

Method: POST 
    URL: http://localhost:1219/DataService.svc/CustomMethod 
    Reguest Headers: 
    User-Agent: Fiddler 
    Host: localhost:1219 
    Content-Length: 27 
    Content-Type: application/x-www-form-urlencoded 
    Request Body: 
    myParameter=parameter1value 

的方法被調用,但「myParameter」參數始終爲空。我錯過了什麼?

謝謝你的時間。

+0

什麼是「parameter1value」?嘗試用一些硬編碼的字符串替換它以用於測試目的。我沒有使用過提琴手,但是在你的請求「config.SetServiceOperationAccessRule(」CustomMethod「,ServiceOperationRights.All)」中將值傳遞給「myParameter」的地方? –

+0

parameter1value實際上是一個字符串值。謝謝,但「得到」答案是正確的。內容必須是json。 –

回答

0

請請參閱Section 10.4.1.3. Invoking an Action的OData 3.

短篇小說:內容類型必須是JSON。

如果調用請求中包含的任何非結合的參數值,則該請求的 內容類型必須是「應用/ JSON」和 參數值必須在一個JSON對象在 被編碼請求正文。

+0

非常感謝。就是這樣。 –

0

我相信你傳遞參數'myParameter'的方式可能是錯誤的。

您可以嘗試使用visual studio來使用您的服務,然後嘗試通過它。

一個問題.. 當你調用服務爲獲取服務,是內容類型是

內容類型:應用程序/ x-WWW窗體-urlencoded