首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CookieContainer和WebServices

CookieContainer和WebServices
EN

Stack Overflow用户
提问于 2010-09-27 18:13:19
回答 1查看 1.2K关注 0票数 0

我有WebService:

代码语言:javascript
复制
public class Service1:WebService {        
        private readonly MNConnection _conn;
        private MNLpu _lpu;

        public Service1() {
            _conn = new MNConnection();
        }

        [WebMethod(EnableSession = true)]
        public void Open(string login, string password) {
            _conn.Open(login, password);
            _lpu = (MNLpu)_conn.CreateLPU();
        }

        [WebMethod(EnableSession = true)]
        public decimal Get() {
            return _lpu.Count;
        }
}

当我从外部控制台应用程序调用它时,它在最后一行显示NullReferenceException:

代码语言:javascript
复制
    CookieContainer cookie = new CookieContainer();
    Service1 lh = new Service1 {CookieContainer = cookie};
    lh.Open("login", "pwd");
    Console.WriteLine(lh.Get());

如果从webservice中移除Open()方法,并将其插入到构造函数中,则可以很好地工作:

代码语言:javascript
复制
        _conn.Open(login, password);
        _lpu = (MNLpu)_conn.CreateLPU();

如何修复它?P.S. MNConnection -我自己的类,与OracleConnection一起工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-27 18:22:41

对web方法的每个调用都会在服务器端调用一个新的web服务,因此在Web服务上保留任何私有变量是不好的。

对于服务器端的lh.Open和lh.Get这两个调用,即使在客户端只有一个代理实例,也会创建两个不同的WebService实例。

如果你想纠正这一点,那么你应该只使用HttpContext.Current.Session,并将你有用的对象实例存储在下面的代码中。

您应该更改您的web服务,如下所示...

代码语言:javascript
复制
    [WebMethod(EnableSession = true)] 
    public void Open(string login, string password) { 
        MNConnection _conn = new MNConnection();
        _conn.Open(login, password); 
        HttpContext.Current.Session["MyConn"] = _conn;
        HttpContext.Current.Session["LPU"] = _conn.CreateLPU();
    } 

    [WebMethod(EnableSession = true)] 
    public decimal Get() {
        MNLPU _lpu = HttpContext.Current.Session["LPU"] as MNLPU; 
        return _lpu.Count; 
    } 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3802830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档