【发布时间】:2010-08-27 08:05:11
【问题描述】:
我的 WCF 服务有问题。 我希望我的方法返回 JSON 格式的列表。
当我调用该方法时,我的响应是空的。即使我将方法的 BodyStyle 设置为 Wrapped。
如果我返回null,它会起作用,然后输出变为:
null
并且将 BodyStyle 设置为 Wrapped:
{
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>
我只是无法让它工作..
【问题讨论】: