我有一个asmx方法接受如下文件列表:
[WebMethod]
public void UploadFiles(List<byte[]> files)
{
}
Windows元数据不包含在字节数组中。我尝试使用Dictionary<filename, byte[]>
,但实现IDictionary
的类不可序列化。我也试过使用KeyValuePair<string, byte[]>[]
,但IMO看起来很脏。
还有其他方法可以包含文件名吗?
答案 0 :(得分:1)
正如评论中所提到的,通过制作自定义数据类可以轻松解决这个问题。
令人遗憾的是,字典不可序列化,但它是XML序列化过程的固有缺陷。对于带有循环引用的数据类也是如此,它只是不起作用 但是,WCF设法解决了这些问题。但是你正在使用.asmx(SOAP),因此你会遇到不幸的不兼容问题。
我只是制作一个自定义课程:
[Serializable]
public class File
{
public string FileName {get;set;}
public byte[] Payload {get;set;}
}
然后将您的网络方法更改为:
[WebMethod]
public void UploadFiles(List<File> files)
{
//...
}
简单但有效:)