WEB开发网
开发学院软件开发VC 手把手教你学Web Service 阅读

手把手教你学Web Service

 2007-09-01 21:35:03 来源:WEB开发网   
核心提示: Server Error in ’/WebService4’ Application.WebService4.Service1+Foo cannot be serialized because it does not have a default public co

Server Error in ’/WebService4’ Application.

WebService4.Service1+Foo cannot be serialized because it does not have a default public constructor.

Description: An unhandled exception occurred during the execution of the current web request.Please review the stack trace for more information about the error and where it originated in the code.

Exception Details:System.Exception: WebService4.Service1+a cannot be serialized because it does not have a default public constructor.

Source Error:一大堆Error

怎么回事!看看error吧!WebService4.Service1+Foo出问题了,什么问题?

it does not have a default public constructor.

Faint,是都有default的吗?没有,系统会生成一个的波!不管了,加上一个。

public Foo()
{
   //do nothing
}

再编译,成功了!至少Hello World的第一个页面出来了点击链接,不错,如你所想,还是出现上述输入数组的情形,道理都明白了吗?

Test

No test form is available as this service or method does not support the HTTP GET protocol.

SOAP

The following is a sample SOAP request and response.

The placeholders shown need to be replaced with actual values.

没事的,象3中情况一样,调用是没有问题的,放心!

5.好像都将完了吧?没有!诸位有没有考虑到在人家的程序中调用我的时候,怎样定的输入参数的类型?该类型使我自己定义的啊!如上变量Foo。好,我们到刚才生成的Windows Application里面看看那。在Solution Explore中的localhost,右键选择Update Web Referece。(我们改过,他可不知道,呵呵)把原来的语句改成:

localhost.Service1 ls=new localhost.Service1();

localhost.Foo FooTest=new localhost.Foo();

按点的时候,自动Foo会弹出来了,一切正常,没什么特别啊?好,我们回去改改Web Service。将class Foo改为:

public class Foo
{
   public Foo ()
   {
   }
   public Foo (int x)
   {
     str=new string[x];
   }
   public class HiddenOrNot
   {
     public HiddenOrNot()
     {
       //do nothing
     }
   }
   public string[] str;
}

Web Method不变。回去Windows Application里面,再update一次,试试输入ls.,看看弹出来什么?没有我们新加上去的HiddenOrNot类吧?奇怪,我明明声明他是public的波!怎么不行?我们再回去Web Service,将Web Method改为:

public string HelloWorld(Foo FooTest, Foo.HiddenOrNot fhTest)
{
   //do something
}

回去Windows Application 里面,再update一次,试试输入ls.,再看看弹出来什么? 有了!有ls.Foo 和ls.HiddenOrNot了。看来,Web Reference中,你的Web Service对象是否可见,就是根据输入参数确定的,他才不管你是public那(对了,记得constractor要为public波,还要有default constrator)。

6.好了,剩余的问题,就是上面几种情况的综合了,根据排列组合定理...嗯,不说了。各位看官自行实践ba!

上一页  1 2 3 4 

Tags:手把手 Web Service

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接