要成为XML可序列化,从IEnumerable继承的类型必须具有Add(System.Object)的实现

时间:2016-06-22 11:39:03

标签: c# web-services serialization soap

我正在尝试构建一个Web服务,以便从外部获取邮件服务器的附件并从那里发送,但我收到以下错误:

  

要成为XML可序列化,从IEnumerable继承的类型必须具有   Add(System.Object)在其所有级别的实现   继承层次结构。 System.Collections.Specialized.StringDictionary   没有实现Add(System.Object)。 [出现InvalidOperationException:   反映类型为“System.Net.Mail.Attachment”的错误。]

我的代码如下:

[WebMethod]
    public String SendMailWithAttachment(string mail_sender, string[] mail_receiver, string mail_subject, string mail_text, Attachment att)
...

1 个答案:

答案 0 :(得分:0)

System.Net.Mail.Attachment不是为了序列化为xml而设计的。您需要发送构建附件所需的数据,并在Web方法的主体中使用它。例如,发送带有数据的字节数组和带有附件名称的字符串:

[WebMethod]
public String SendMailWithAttachment(string mail_sender, string[] mail_receiver, string mail_subject, string mail_text, byte[] attachment_data, string attachment_name){
   using(var ms = new MemoryStream(attachment_data)){
       var attachment = new System.Net.Mail.Attachment(ms,attachment_name);
       ...
   }
}