当我尝试"添加Web引用"到我的ASMX代理项目时收到此错误消息:
**"To be XML serializable, types which inherit from ICollection must have an implementation of Add(System.String) at all levels of their inheritance hierarchy. System.Collections.Specialized.NameValueCollection does not implement Add(System.String)"**
我需要将名称 - 值对传递给我的Web服务,这就是我想出的:
public class FileService : System.Web.Services.WebService { [WebMethod] public string UploadFile(byte[] incomingArray , string FileName , long FileLengthInBytes , NameValueCollection nvcMetaData)
我现在意识到我需要帮助改变这一点(我是C#的新手和.Net框架的这一部分).如果我能使这个工作,我的Web服务将需要由ColdFusion调用(现在我使用.aspx页面来调用Web服务).因此,无论我想出什么方式来传递可变数量的NAME-VALUE对,我都需要它可以由CF调用.提前致谢.
作为替代方案,您可以只定义一个简单的NameValue类并接收一个数组.
public class NameValue { public string Name{get;set;} public string Value{get;set;} } [WebMethod] public string UploadFile(byte[] incomingArray , string FileName , long FileLengthInBytes , NameValue[] nvcMetaData)
如果在客户端有一个NameValueCollection,您可以轻松映射到您的类型.检查我在此问题中发布的示例