webservice内参数传递的问题

whblxl 2006-08-29 11:43:48
在webservice中的代码如下
public class FileConvertService : System.Web.Services.WebService
{
private string m_mdbFileName = "";
private string m_layerTable = "";
private string m_symbolTable = "";

[WebMethod]
public void Set_mdbFileName(string mdbFileName)
{
this.m_mdbFileName=mdbFileName;
}

[WebMethod]
public void Set_layerTable(string layerTable)
{
this.m_layerTable=layerTable;
}
}

asp.net中的代码如下
FileConvertService.FileConvertService fWeb=new TestConvertWeb.FileConvertService.FileConvertService();

fWeb.Set_mdbFileName("D:\\aaa\\data\\Style\\dSymbol.mdb");
fWeb.Set_layerTable("cadLayerCompar"); //设置断点

在调用webservice调试的时候
在运行时 fWeb.Set_mdbFileName("D:\\aaa\\data\\Style\\dSymbol.mdb");
webservice中的
m_mdbFileName值是正确的
运行到fWeb.Set_layerTable("cadLayerCompar");时
到webservice内部m_mdbFileName的值就为空了

这是怎么回事?难道webservice中不能使用private 方式的变量?
...全文
525 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Knight94 2006-08-29
  • 打赏
  • 举报
回复
没调用一次webmethod,那么服务器的对象要重新创建一次,所以成员变量无法作为进行传递信息的方法。

替换方法:
方法1、修改webmethod的接口,增加参数来进行传递;
方法2、用Session来保存,不过client端调用的时候要先建立cookie,保证两次访问在同一个session中。
whblxl 2006-08-29
  • 打赏
  • 举报
回复
webservice的人气太差了!
whblxl 2006-08-29
  • 打赏
  • 举报
回复
up
whblxl 2006-08-29
  • 打赏
  • 举报
回复
问题解决了,用session
Knight94 2006-08-29
  • 打赏
  • 举报
回复
to 但是在调用的时候怎么声明这个数据结构呢?

就像本地的类型一样使用

例如:
ParaObject myPara = new ParaObject();
//Set other value as "myPara.member1"
whblxl 2006-08-29
  • 打赏
  • 举报
回复
但是在调用的时候怎么声明这个数据结构呢?
Knight94 2006-08-29
  • 打赏
  • 举报
回复
to
我要传递的参数太多了有十几个,所以不能一次传递进来
只能通过 属性一个一个地传 然后通过一个函数执行具体的工作
能不能给个详细的例子(包括客户端调用)?我第一次用webservice,不好意思

比较简单的方法,是在WebService端来创建相应的参数结构,例如:
[Serializable()]
public class ParaObject {

public int member1;
public string member2;
public string member3;
public double member4;
//Constructor to init class member
public ParaObject()
{
//Init class member here
}
}

那么在第二个方法中增加ParaObject类型参数,然后进行传递即可。
lovexyz 2006-08-29
  • 打赏
  • 举报
回复
次调用通过两个函数
就是两次调用,请注意调用这个概念好吗?
我理理我程序中的Call

总之你的问题就如上边鱼公和我说的那样,至于你要采取什么解决方法你自己选择吧
lovexyz 2006-08-29
  • 打赏
  • 举报
回复
用static变量也可以在Application生存期内有效,但是要注意并发问题等

所以还是用Session好
whblxl 2006-08-29
  • 打赏
  • 举报
回复
不是两次调用webservice,而是一次调用通过两个函数传进两个参数
lovexyz 2006-08-29
  • 打赏
  • 举报
回复
WebService是基于ASP.Net的,所以要注意对象的生存期问题
两次WebService调用会两次构造对象,最好还是使用Session了

使用Session的问题在这个版有好多人问过我也答过好多次,还专为此做了Demo,自己找吧
whblxl 2006-08-29
  • 打赏
  • 举报
回复
我要传递的参数太多了有十几个,所以不能一次传递进来
只能通过 属性一个一个地传 然后通过一个函数执行具体的工作
Knight94(愚翁) 能不能给个详细的例子(包括客户端调用)?我第一次用webservice,不好意思
十分感谢

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧