c#:如何在向asmx服务发送文件时包含文件名



我有一个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)
{
    //...
}

简单但有效:)

最新更新