您的位置:程序门 -> .net技术 -> c#



关于webservice的想法,有点不太清楚


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于webservice的想法,有点不太清楚[已结贴,结贴人:superxiaomm]
发表于:2007-01-15 13:16:05 楼主
我初学webservice遇到了这样一个问题:
webservice中:
private   static   filestream   m_f;        

[webmethod(description= "开始上传 ")]
public   bool   beginupload(string   filename,string   path)
{
try
{
m_f   =   new   filestream(path   +   "\\ "
+   filename,   filemode.create);
return   true;
}
catch(exception   ex)
{
return   false;
}
}

[webmethod(description= "分块上传 ")]
public   string   uploadblock(byte[]   fs,int   length)
{
try
{

memorystream   m   =   new   memorystream(fs);
m.writeto(m_f);
m.close();
return   " ";
}
catch(exception   ex)
{
return   ex.message;
}
}
主要是那个static,如果我不用static   的话,我调用下面一个函数uploadblock,m_f就会是null,为什么.
client端我是这样写的:
upload1   o   =   new   upload1();
o.beginupload(filename,@ "d:\ ");
for(int   i=0;i <times;i++)
{
b   =   new   byte[block];
fs.read(b,0,(int)block);
string   ret   =   o.uploadblock(b,block);

//string   a   =   o.uploadblock(b,block);
}
以下是我自己的认为,应该是错的:是不是每次调用webservice就会把member对象重新负值一下?
发表于:2007-01-15 13:52:281楼 得分:6
static   的话m_f只需初始化一次,否则你应该在类实例对象中new   m_f
发表于:2007-01-15 13:52:552楼 得分:7
我的理解是,每次调用webservice,都相当于一个会话,当然会创建相应新的实例...

仅供参考..
发表于:2007-01-15 14:37:263楼 得分:7
用static和不用static的区别就在于   声明的变量或者实例的生存周期不一样。另外的区别就在与类成员的访问上。
用static声明后,他的生存周期和类的一样。不用static,生存周期只是在用到他的时候才存在。不用之后就over了。
这里只代表我个人的理解,不足之处不要见笑。
发表于:2007-01-16 08:55:044楼 得分:0
我的主要矛盾是:upload1   o   =   new   upload1();我只创建了一次webservice的对象,m_f既然是member变量,就应该是一个对象里面共用的一个.事实上我这里却不是这样.

liujia_0421(snowlover)可能能够解释得通
我第一次接触webservice,觉得和原来得有很多不同啊


快速检索

最新资讯
热门点击