你的NewsInfo类型没有声明成为Serializable吧?建议:从WebService里返回数组(NewsInfo[])比较好,返回一个ArrayList使得你的WS与.NET平台相关度太大了。

解决方案 »

  1.   

    hehe,初学者,不大明白,请大侠明示
      

  2.   

    faint!
    在你的NewInfo类的定义上面加上一句:
    [Serializable]
      

  3.   

    知道了,在XML Schema必须明确的指明ArrayList数组包含的Object的类型。
    一种方法是在ArraryList返回值上加XmlArrayAttribute,来表示其内容为NewsInfo。
    更好的办法使用NewsInfo[]作为返回值,在函数返回前将ArrayList的内容Copy到一个NewsInfo[]中,这样的服务可以在更多的系统上很容易的调用,而且也解决了上述问题。
      

  4.   

    不大明白你说的第一种方法,而且我发现在跟踪
    newslst = newssvc.GetSpecialNewsList( i, userpf[i] )
    的时候,输入跟踪参数
    newssvc.GetSpecialNewsList( i, userpf[i] )
    时候,单步跟踪发现说:error:unable to evaluate a web method
    请问如何办?
      

  5.   

    [XmlInclude(typeof(NewsInfo))]
    public ArrayList GetSpecialNewsList( int newskind, int num )
    ...不建议用这种方法...
      

  6.   

    加了之后还是不行,跟中时还是说UNABLE TO EVALUATE A WEB METHOD
      

  7.   

    你的GetSpecialNewsList是WebMethod吗?
    还有你改了asmx之后又没有重新生成proxy? Add Web Reference?
    如果都作了,就应该是别的地方有问题了。
      

  8.   

    当然是WEBMETHOD咯,重新在VS。NET BUILD了一次新闻的WEB SERVICE,
    可以运行,但一到客户端的调用就说UNABLE TO EVALUATE A 
    WEB METHOD咯。能不能讲下第二种方法具体如何做?
      

  9.   

    我的意思是你在修改了WebService的asmx文件(或者那个asmx.cs文件)并且重新编译之后,在clientproject当中要重新update web reference。
    或者,重新建立一个client, add web reference试试看。