2010-08-27 33 views
1

我遇到了我的WCF服務問題。 我想我的方法返回以JSON格式化的列表。ASP.NET WCF服務不返回任何結果

當我調用該方法時,我的回覆是空的。即使當我將該方法的BodyStyle設置爲Wrapped。

它的工作原理,如果我返回空值,輸出則變爲:

null 

與BodyStyle設置爲包裹:

{ 
    VerwerkStatus: null 
} 

如果我調試和觀察名單有87項,或者我返回list.Count(),我得到87,所以列表不是空的。

我懷疑它目前只在我返回一個整數或字符串值時才起作用。如果我返回1個VerwerkStatus對象,它也不起作用。

該服務託管在ASP.NET 3.5上運行的ASP.NET網站項目中。 VerwerkStatus對象是一個實體對象,因此它是可序列化的。

我的代碼:

/// <summary> 
/// 
/// </summary> 
/// <param name="sessie"></param> 
/// <param name="verwerkStatusId"></param> 
/// <returns></returns> 
[OperationContract] 
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)] 
public List<VerwerkStatus> Status(string sessie, int verwerkStatusId) 
{ 
    if (!String.IsNullOrEmpty(sessie)) 
    { 
     Guid sessieGuid = new Guid(sessie); 
     var status = statusRepository.GetStatus(sessieGuid, verwerkStatusId); 
     var list = status.ToList(); 
     // list.Count() == 87 
     // none in browser 
     return list; 
    } 
    else 
    { 
     return null;// "FOUT: Geen sessie"; 
    } 
} 

和程序Web.Config:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="SheetProcessServiceAspNetAjaxBehavior"> 
       <webHttp /> 
      </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
      <behavior name="SheetProcessServiceAspNetAjaxBehavior"> 
       <serviceMetadata httpGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="false" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="SheetProcessService" behaviorConfiguration="SheetProcessServiceAspNetAjaxBehavior"> 
      <endpoint address="" behaviorConfiguration="SheetProcessServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="SheetProcessService" /> 
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
</system.serviceModel> 

我只是無法得到它的工作..

回答

0

確保VerwerkStatus類使用[DataContract]進行裝飾,並使用[DataMember]