2011-07-26 20 views
8

Fiddler'ı Kullanma WCF hizmetime bir JSON iletisi gönderiyorum. Servis System.ServiceModel.Activation.WebServiceHostFactory POST yapılırWCF REST POSTASI JSON: Parametre boş

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

, kod girmeye muktedir değilim kullanır, ancak parametre usernamePasswordJsonboş olduğunu. Bu neden?

Not: Ben Bareiçin Bodystyle set Strangly zaman sonrası bile hata ayıklamak için beni koduna almaz.

İşte Fiddler Ekran var: enter image description here

cevap

18

type String olarak parametrenizi ilan, bu yüzden bir JSON dize bekleniyor - ve ona bir JSON nesnesi geçiyoruz.

[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

Fantastik:

bu isteği almak için, aşağıdaki benzer bir sözleşme olması gerekir. Bu bir rüya gibi çalıştı. Bir gün hüsrandan sonra sonunda bir çözüm buldum. –

+0

Fantastik, null verilerle hizmete girdim ve öneriniz sorunu çözdü. Paylaşım için teşekkürler. – Signcodeindie

+0

Sanırım sihirli çizgi 'BodyStyle = WebMessageBodyStyle.Bare' geçmiş için beni güldürüyordu * saat saymak istemiyorum! Bu snippet'i gönderdiğiniz için teşekkür ederiz! –