JSON服务类未定义客户端

时间:2013-06-25 13:58:22

标签: javascript json wcf web-services

我的asp.net网站上有一堆通过ajax调用使用的JSON服务类。所有这些都一直很好,直到几天前,其中一个课程停止在客户端可见。

它被称为ExceptionsJSONService,当我尝试通过javascript实例化它时

var service = new ExceptionsJSONService();

我得到“预期的对象”。我无法弄清楚自从它工作正常以后会发生什么变化。我检查了web.config,并通过以下方式定义了服务:

    <behavior name="ExceptionsJSONServiceAspNetAjaxBehavior">
      <enableWebScript />
    </behavior>

以后:

  <service name="ExceptionsJSONService">
    <endpoint address="" behaviorConfiguration="ExceptionsJSONServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="ExceptionsJSONService" />
  </service>

它通过ScriptManager在主页面中定义:

<asp:ServiceReference Path="~/Services/ExceptionsJSONService.svc" />

我有服务文件,其中包含以下内容:

<%@ ServiceHost Language="C#" Debug="true" Service="ExceptionsJSONService" CodeBehind="~/App_Code/ExceptionsJSONService.cs" %>

我有实际的类定义文件,其标题是:

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ExceptionsJSONService : BaseJSONService {}

由于长度的原因,我省略了类的主体,但它构建得很好,除了我所有其他JSONService类的名称之外,它们是相同的。

1 个答案:

答案 0 :(得分:0)

问题是由ExceptionsJSONService类中定义的公共函数引起的。该功能应该是公开的,但它也被标记为操作合同。

在函数的参数列表中是我们的EF DB上下文对象。因为它位于操作合同的参数列表中,所以它使服务搜索与数据库上下文关联的所有实体的数据合同。这导致抛出只出现在服务跟踪日志中的异常。该异常阻止了服务正确加载,所以当我尝试在javascript中实例化服务客户端时,它会失败。

从功能中删除“操作合同”属性解决了问题。