2011-07-26 103 views
8

使用Fiddler我將JSON消息發佈到我的WCF服務。該服務使用System.ServiceModel.Activation.WebServiceHostFactoryJSON的WCF REST POST:參數爲空

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

當柱子是,我能夠打入代碼,但參數usernamePasswordJson。爲什麼是這樣?

注:Strangly當我設置BodyStyle,後甚至沒有得到的代碼爲我調試。

這裏的提琴手屏幕: enter image description here

回答

18

你宣佈你的參數爲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; } 
} 
+0

神奇。這就像一場夢。經過一天的沮喪,我終於有了一個解決方案。 –

+0

奇妙的是,我一直在努力將空數據傳遞到服務中,您的建議解決了這個問題。感謝分享。 – Signcodeindie

+0

我覺得神奇的線'BodyStyle = WebMessageBodyStyle.Bare'是過去一直困擾我的東西*不想數*小時!感謝您發佈此代碼段! –