json - 调试不会序列化对象的 WCF 服务

标签 json vb.net wcf serialization

我在将对象序列化为 JSON 时遇到问题,并且是 WCF 的新手,我在调试方面遇到了问题。如果我通过在浏览器中输入 url 来访问服务,我得到的只是页面不可用。

场景:我有 A 类继承了 B 类列表 . 如果我在 A 类中注释掉它添加到它的集合中,我至少可以点击服务 (显然不会出现任何数据),但如果它添加到它的集合中,我就不能再点击该服务了。

界面:

<OperationContract()> _
<WebGet(UriTemplate:="getAdverseReactions", responseFormat:=WebMessageFormat.Json)> _
<ServiceKnownType(GetType(AdverseReactions))> _
<ServiceKnownType(GetType(AdverseReaction))> _
Function GetAdverseReactions() As AdverseReactions

实现接口(interface):
Public Function GetAdverseReactions() As AdverseReactions Implements IPortalCoreService.GetAdverseReactions
    Return CoreServiceController.GetAdverseReactions()//which returns class A
End Function

A类:
<CollectionDataContract(Name:="AdverseReactionsCollection", ItemName:="AdverseReaction")> _
Public Class AdverseReactions
Inherits List(Of AdverseReaction)

B类:
<DataContract(IsReference:=True)> _
Public Class AdverseReaction

我通过附加一个进程单步执行了代码,没有抛出异常,我可以确认对象按应有的方式返回,但我显然无法序列化它。我读过关于循环引用的文章,我的一个 friend 建议这两个类可能以无限的方式相互序列化。

我的主要问题:有没有一个地方我可以查看为什么会发生这种情况,或者至少有更多关于它的信息?这个问题一直在处理我,我想要的只是序列化这个,当我这样做时,我想我会休一个星期的假期:)。

最佳答案

将以下 block 添加到您的 web.config <configuration>堵塞

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData="c:\log\WebTrace.svclog"  />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

并确保指定的目录 (c:\log) 存在并且可由 IIS 服务写入。

完成后,执行导致序列化问题的操作,然后导航到目录并双击生成的 svclog 文件。

这将打开 Microsoft Service Trace Viewer 中的文件.打开后,您将在左侧看到以红色显示的错误。

单击其中一个将在右上方 Pane 中显示详细信息,您可以单击每个操作以确定 WCF 提示的内容。

关于json - 调试不会序列化对象的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599489/

相关文章:

json - 在 Purescript 中的 AST 中输入信息

json - 从 json unmarshal 键入断言二维接口(interface)数组的更简单方法

java - Jackson - @JsonValue 注释字段无法反序列化

javascript - 随着时间增量动态创建表

javascript - 如何在js/.net中通过各种值过滤xml记录(组合过滤器)

.net - 为什么 AndAlso 不能替代 And

c# - 为什么我排队的 WCF 消息悄无声息地消失了?

c# - Wcf服务操作契约变更

javascript - 将字符串化的 JSON 数据渲染到表中

wcf - WCF检查邮件