【发布时间】:2011-09-06 19:54:03
【问题描述】:
我有一个在服务器上托管服务的 wcf Web 应用程序。我正在创建客户端(api)来读取这些服务。
我已使用以下方式将跟踪添加到我的服务端:
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="bin\messages.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
.svclog 文件没有显示任何错误,所以我猜它与客户端对象的反序列化有关。我如何查看是否是这种情况?
帮助追踪问题会很棒。
由于私有成员为空的错误,我不得不将 if null 添加到 SETters。从那以后,我一直收到 http 错误。
DTO 示例:
[DataContract]
public class PersonDTO
{
private CUSTOMType<string> givenNameField ;
private CUSTOMType<string> middleNameField ;
private CUSTOMType<string> familyNameField ;
[DataMember]
public string GivenName
{
get
{
return this.givenNameField.Value;
}
set
{
if (this.givenNameField == null)
this.givenNameField = new CUSTOMType<string>();
this.givenNameField.Value = value;
}
}
[DataMember]
public string MiddleName
{
get
{
return this.middleNameField.Value;
}
set
{
if (this.middleNameField == null)
this.middleNameField = new CUSTOMType<string>();
this.middleNameField.Value = value;
}
}
[DataMember]
public string FamilyName
{
get
{
return this.familyNameField.Value;
}
set
{
if (this.familyNameField == null)
this.familyNameField = new CUSTOMType<string>();
this.familyNameField.Value = value;
}
}
}
编辑:
最初我有两个对象:Business 和 DTO。唯一的区别是 DTO 只是直接的 C# 数据类型,其中业务层具有逻辑和我的 CUSTOMType。这没有问题。现在我认为这是重复的,并试图将两者结合起来。二进制序列化过程可能不喜欢我的自定义类型。
在某一时刻,构造函数确实具有私有成员的 init。该服务抛出私有成员为空的错误。这就是为什么我改为使用SETTERS。
【问题讨论】:
标签: c# .net wcf exception-handling