WCF REST POST JSON: параметр пуст - PullRequest
8 голосов
/ 27 июля 2011

Используя Fiddler, я отправляю сообщение JSON в свой сервис WCF.Служба использует System.ServiceModel.Activation.WebServiceHostFactory

[OperationContract]
[WebInvoke
(UriTemplate = "/authenticate",
       Method = "POST",
       ResponseFormat = WebMessageFormat.Json,
       BodyStyle = WebMessageBodyStyle.WrappedRequest
       )]
String Authorise(String usernamePasswordJson);

Когда выполняется POST, я могу взломать код, но параметр usernamePasswordJson равен null .Почему это так?

Примечание: Странно, когда я устанавливаю BodyStyle на Голый , пост даже не доходит до кода, который я могу отлаживать.

Вот экран Fiddler: enter image description here

1 Ответ

19 голосов
/ 27 июля 2011

Вы объявили свой параметр как тип String, поэтому он ожидает строку JSON - и вы передаете ему объект JSON.

Чтобы получить этот запрос, вам необходим контракт, аналогичный приведенному ниже:

[ServiceContract]
public interface IMyInterface
{
    [OperationContract]
    [WebInvoke(UriTemplate = "/authenticate",
           Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
    String Authorise(UserNamePassword usernamePassword);
}

[DataContract]
public class UserNamePassword
{
    [DataMember]
    public string UserName { get; set; }
    [DataMember]
    public string Password { get; set; }
}
...