首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

webservice自定义结构作参数的有关问题(网下查找无相关资料)

2012-09-14 
webservice自定义结构作参数的问题(网上查找无相关资料)一个公共类作为结构体的类集合public struct A1{pu

webservice自定义结构作参数的问题(网上查找无相关资料)
一个公共类作为结构体的类集合
public struct A1
{
  public string a1;
  public string a2;
}
生成dll后为A.dll

服务器端用webservice,代码如下
[WebMethod]
public bool B1(object sender)
{
  try
  {
  A.A1 a = (A.A1)sender;
  return true;
  }
  catch
  {
  return false;
  }
}

客户端代码如下:
private void C1()
{
  A.A1 a = new A.A1();
  a.a1 = "a1";
  a.a2 = "a2";
  BService.B b = new BService.B();
  try
  {
  if(b.B1(a))
  {
  MessageBox.Show("T");
  }
  else
  {
  MessageBox.Show("T");
  }
  }
  catch(Exception ex)
  {
  MessageBox.Show(ex.Message);
  }
}

显示的错误信息为:生成xml文档时错误
错误位置为:if(b.B1(a))

求各位大大给出解决方法。网上查找了N天了都没有相关介绍。

[解决办法]
看不出问题来
[解决办法]
public bool B1(A.A1 sender)
[解决办法]
WebMethod] 
public bool B1(A.A1 sender) 


否则客户端无法知道参数是什么类型的,无法进行正确的marshal
[解决办法]
up
[解决办法]
up
[解决办法]
先把结构体序列化了,wsc收到序列化串再反序列化成对象,不就行了,这种方法我用过。
另外,WebService也可以动态调用
http://blog.zhaoyu.me/archives/142.shtml
[解决办法]
直接用结构体就行啦,只要不是返回的参数就不需要序列化
[解决办法]
up
[解决办法]

C# code
[Serializable]public class A{    struct A1{    }}
[解决办法]
直接web引用就可以得到自定义结构了,为什么还要在客户端引用
[解决办法]
[WebMethod]
[XmlInclude(typeof(A.A1))]
public bool B1(object sender)
{
try
{
A.A1 a = (A.A1)sender;
return true;
}
catch
{
return false;
}
}

热点排行