javascript - JSON 服务类未定义客户端

标签 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 类的名称相同之外,都是相同的。

最佳答案

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

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

从函数中删除操作契约属性解决了该问题。

关于javascript - JSON 服务类未定义客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17299315/

相关文章:

javascript - 使用 AJAX 插入数据库后,如何使用插入的信息更新同一页面上的 div?

javascript - 单击时如何将链接 href 本身复制到剪贴板

.net - WCF HTTP POST 给出 HTTP 状态代码 400 : Bad Request

wcf - 支持 WSE 3.0 吗?

javascript - 将rgb字符串转换为十进制

javascript - Node.js websocket 错误 "Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL"

javascript - 离线加载本地JSON文件

javascript - 如何通过用户 ID 从 flickr 获取集合列表?

javascript - 使用数据表呈现多维嵌套 JSON 响应

database - 如何知道 WCF DataContract 代表持久实体还是 transient 实体?