【问题标题】:JSON service class not defined client sideJSON服务类未定义客户端
【发布时间】:2013-06-25 13:58:22
【问题描述】:

我在我的 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 类的名称外都相同。

【问题讨论】:

标签: javascript json wcf web-services


【解决方案1】:

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

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

从函数中删除 Operation Contract 属性解决了该问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2013-05-16
    • 2021-07-27
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多