我有一个asmx方法,它接受如下文件列表:
[WebMethod]
public void UploadFiles(List<byte[]> files)
{
}
字节数组中不包括Windows元数据。我尝试使用Dictionary<filename, byte[]>
,但是实现IDictionary
的类是不可序列化的。我也试过使用KeyValuePair<string, byte[]>[]
,但IMO它看起来很脏。是否有其他方法可以包含文件名?
如注释中所述,这可以通过创建自定义数据类轻松解决。
不幸的是Dictionary不可序列化,但这是XML序列化过程中固有的缺陷。具有循环引用的数据类也是如此,只是不起作用
然而,WCF已经设法解决了这些问题。但您使用的是.asmx(SOAP),所以您遇到了不幸的不兼容问题。
我只需要制作一个自定义类:
[Serializable]
public class File
{
public string FileName {get;set;}
public byte[] Payload {get;set;}
}
然后将您的web方法更改为:
[WebMethod]
public void UploadFiles(List<File> files)
{
//...
}
简单但有效:)