我有一个通过 jquery 调用的启用了 WCF Ajax 的 Web 服务。当我只返回一个字符串对其进行测试时,它返回正常。一旦我添加了更多功能,javascript 错误回调就会在没有有用数据的情况下运行。只是说'错误',readystate = 0,status = 0。
我可以单步执行服务代码,它会成功返回一个对象数组。然而,客户没有。
这是代码。
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WebAPI
{
[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json)]
public Person[] GetPeople(Guid groupId)
{
using (SchedulerContext context = new SchedulerContext())
{
return context.People.Where(p=>p.Group_ID==groupId).ToArray();
}
}
}
在客户端:
<script type="text/javascript">
$(document).ready(function () {
$.ajax(
{
type: "GET",
dataType: "json",
contentType: "json",
data: { groupId: 'ae09a080-5d7c-4e92-9a87-591574b7c4b8' },
url: "WebAPI.svc/GetPeople",
error: function (error) {
alert("error");
},
success: function (msg) {
alert(msg.d);
}
}
);
});
</script>
更新: 用提琴手检查它,http结果是504,在“原始”响应选项卡中有以下内容:
HTTP/1.1 504 Fiddler - Receive Failure
Content-Type: text/html; charset=UTF-8
Connection: close
Timestamp: 13:52:46.107
[Fiddler] ReadResponse() failed: The server did not return a response for this request.
更新 - 2012/05/04:( 顺便说一句,大家星球大战日快乐!) 我发现问题出在 JSON 序列化中。它在我的实体模型上给出了循环引用异常。仍在研究解决方案。