2011-08-31 105 views
1

將JSON數據發佈到下面的WCF服務時,接收到錯誤「未設置對象實例的對象引用」。將JQuery發佈到WCF服務

我的猜測是僱員對象沒有初始化,但我不確定應該做什麼,因爲當我使用字符串測試它工作得很好。

任何建議,非常感謝。

接口(IAccount.cs):

[ServiceContract(Namespace = "AccountService")] 
public interface IAccountService 
    {   
     [OperationContract, WebInvoke(Method = "POST", 
    BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
     string CreateAccount(Employee employee);   
    } 

[DataContract] 
    public class Employee 
    { 
     [DataMember] 
     public string firstName { get; set; } 

     [DataMember] 
     public string lastName {get; set;} 

} 

實現(AccountService.svc)

AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class AccountService: IAccountService 
    { 
     public string CreateAccount(Employee employee) 
     { 
      string test = employee.firstName; 

      return test; 
     } 
    } 

JSON郵政數據:

{ 「名字」: 「測試」,「姓氏「:」User「}

+0

可以調試服務?你知道錯誤發生在哪裏嗎? –

+0

運行服務器跟蹤,看起來它不工作的原因是因爲它試圖使用XML來解碼JSON字符串。跟蹤中報告的錯誤是:在被忽略的反序列化過程中,在XML中遇到了一個無法識別的元素 – ServerMonkey

回答

1

好了終於整理出來了,希望這可以幫助有同樣問題的人。

我的初始JSON看起來正確,但不起作用:{「firstName」:「Test」,「lastName」:「User」}。但通過查看服務器跟蹤,您可以看到內置的XML DeSerializer無法將元素映射到WCF服務方法中的對象(在我的情況下爲員工對象),這是造成空引用錯誤的原因。

把窗體屬性的對象,服務參數的名稱卻奏效了比賽裏面:{「員工」:{「名字」:「測試」}}

0

默認情況下,WebGet的RequestFormat設置爲XML。將其設置爲Json。

+0

不確定我關注你,服務被標記爲JSON,並且我發佈了JSON數據:$ .ajax({type: 「POST」, URL: 「/ajax/AccountService.svc/CreateAccount」, 的contentType: 「應用程序/ JSON;字符集= UTF-8」, 數據:FORMDATA, 過程數據:假, 數據類型: 「JSON」 }); – ServerMonkey