我的WCF服务遇到了问题。 我希望我的方法返回一个用JSON格式化的列表。
当我调用该方法时,我的响应为空。即使我将方法的BodyStyle设置为Wrapped。
如果我返回null,它会起作用,然后输出变为:
null
并将BodyStyle设置为Wrapped:
{
VerwerkStatus: null
}
如果我调试并观看列表有87项,或者如果我返回list.Count(),我得到87,所以列表不为空。
我怀疑它当前只在我返回一个整数或字符串值时才起作用。如果我返回1个VerwerkStatus对象,它也不起作用。
该服务托管在ASP.NET 3.5上运行的ASP.NET网站项目中。 VerwerkStatus对象是一个Entity对象,因此可以序列化。
我的代码:
/// <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 :(得分:0)
确保使用[DataContract]修饰VerwerkStatus类,使用[DataMember]
修饰属性