2014-01-15 4 views
0

Я создал службу данных WCF, и она отлично работает. Мои пользовательские методы, которые являются методами типа GET, также работают нормально. Проблема заключается в обычном методе POST.WCF Data Services - Пользовательский метод 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"? Попробуйте заменить его на некоторые жестко закодированные строки для целей тестирования. Я не использовал fiddler, но где вы передаете значения в «myParameter» в вашем запросе «config.SetServiceOperationAccessRule (« CustomMethod », ServiceOperationRights.All)»? –

+0

parameter1value на самом деле является строковым значением. Спасибо, но «tne» получил ответ правильно. Содержимое должно быть json. –

ответ

0

Пожалуйста см. Section 10.4.1.3. Invoking an Action для OData 3.

Краткое описание: Тип контента должен быть JSON.

Если запрос Invoke содержит любые необязательные значения параметров, то Content-Type запроса должен быть «приложения/JSON», а значения параметров должны быть закодированы в одном объекте JSON в запрос корпус.

+0

Большое спасибо. Вот и все. –

0

Я считаю, что способ прохождения параметра «myParameter» может быть неправильным.

вы можете попытаться использовать свое обслуживание, используя визуальную студию, а затем попытайтесь передать ее.

еще один вопрос .. при вызове службы, как получить услугу, является Content-Type является

Content-Type: применение/х-WWW-форм-urlencoded