当前位置:  开发笔记 > 编程语言 > 正文

在C#webservice中使用NameValueCollection不会产生XML可序列化错误

如何解决《在C#webservice中使用NameValueCollection不会产生XML可序列化错误》经验,为你挑选了1个好方法。

当我尝试"添加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调用.提前致谢.



1> eglasius..:

作为替代方案,您可以只定义一个简单的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,您可以轻松映射到您的类型.检查我在此问题中发布的示例

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有