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

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

2013-03-26 
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
[解决办法]

[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;
    }

热点排行