我有一個Web服務將序列化一個類(類是從Web服務)到MSMQ,然後一個Windows服務正在檢查隊列和反序列化。 Windows服務有一個Web引用來獲得該類。從Web服務引用的C#類不正確反序列化
如果我反序列化Web服務內部,一切都很好。然而,當我從Windows服務反序列化時,除了兩個字符串數組以外,所有工作都是空的,所以我相信某些東西不能通過Web引用正確傳輸。
下面是該類問題的一個片段:
[Serializable, XmlInclude(typeof(EmailType))]
public partial class Email
{
[System.Xml.Serialization.XmlElement("BodyParameters")]
public string[] BodyParameters
{
get
{
return this.bodyParameters;
}
set
{
this.bodyParameters = value;
}
}
[System.Xml.Serialization.XmlElement("SubjectParameters")]
public string[] SubjectParameters
{
get
{
return this.subjectParameters;
}
set
{
this.subjectParameters = value;
}
}
}
的Reference.cs文件我在窗口服務中獲得如下:
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("BodyParameters")]
public string[] BodyParameters {
get {
return this.bodyParametersField;
}
set {
this.bodyParametersField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("SubjectParameters")]
public string[] SubjectParameters {
get {
return this.subjectParametersField;
}
set {
this.subjectParametersField = value;
}
}
有我有一些特殊的方法引用類或在類中設置字符串[]以便它被正確地引用?
這裏的輸出我得到的,如果我序列化到一個文件:
<?xml version="1.0" encoding="utf-8"?>
<Email xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" MessageType="None" PackageID="0" To="[email protected]" Subject="testing..." Body="this is a test" IsHTML="false">
<BodyParameters>one two</BodyParameters>
<BodyParameters>three four</BodyParameters>
<BodyParameters>test test</BodyParameters>
<SubjectParameters>foo</SubjectParameters>
</Email>
請記住,除了BodyParameters和SubjectParameters一切都在窗口服務出精品。 Web服務,一切正常。
建議:刪除'[Serializable接口]'屬性,因爲它不使用XML序列化。然後,序列化到一個文件,併發布文件,以便我們可以看到XML的格式。 – 2009-09-17 17:00:52
另一個建議:幹 - 在項目中使用相同的類庫進行序列化/反序列化。 – jro 2009-09-18 01:29:58