天极Yesky
  • 笔记本电脑
    笔记本
  • 台式电脑
    台式机
  • 手机
    手机
  • 电脑硬件DIY
    DIY硬件
  • CPU
    主板
    音箱
  • 硬盘
    显卡
    键鼠
  • 内存光驱
    显示器
    机箱电源

  • 数码相机DC
    数码相机
  • MP3播放器
    MP3/MP4
  • 数码摄像机DV
    摄像机
  • 电脑外设
    外设
  • 网络
    网络
  • 服务器
    服务器
  • 数字家庭
    数字家庭
  • 群乐
    群乐
  • 产品报价 行情 经销商 渠道 评测 | 软件 设计 网页 开发 安全 论坛 E时代 游戏 图片 壁纸 下载 网摘 博客 索尼专区 Vista 科技奥运
    天极网
    如何调用一个维持会话的Web服务?
    作者: Michèle Leroux Bustamante
    出处: TechTarget
    责任编辑: Harte
    [ 2005-05-08 11:35 ]


      我应该怎样调用一个支持会话状态并在多个请求中维持会话的Web服务?


      在根据SoapHttpClientProtocol得到的Web服务代理类中,有一个叫做CookieContainer的属性。如果你将它初始化为一个System.Net.CookieContainer类型的实例,它将保存那些返回给客户程序的Cookie。当带有同样的cookie容器实例的同一个代理被用来调用服务的方法时,它将cookie容器中的cookie进行序列化,作为组成HTTP头的一个属性放到请求中。在调用支持会话状态的方法之前,应该建立一个CookieContainer并初始化代理,如下:
        System.Net.CookieContainer cookies = new System.Net.CookieContainer();
        localhost.SessionService1 svc = new localhost.SessionService1();
        svc.CookieContainer = cookies;
        svc.UpdateHitCounter();
        这有一个例子Demo,你可以从这里下载http://www.dotnetdashboard.net/downloads/WSSessionCookie.zip


      需要注意的事,一个Cookie容器的实例的生存范围是程序的整个生命周期。如果你给一个代理分配了一个新的Cookie容器,先前保存的会话ID(或其他cookie)将不会再和请求一起传递。

      注意:我一般上不推荐在Web服务中使用会话状态。一个典型的使用会话状态的场景是用它来保存登录状态,这样在会话中只需要一次登录。然而,这样保持一个登录状态并没有提供足够的安全性来防止回复攻击(replay attack)或者在通信网络上截取会话ID。OASIS的Web服务安全标准描述了怎样安全地传递数据,包括具有足够的过期规则的基于会话的数据。此外它们描述了如何加密数据和对数据进行签名,以保证数据不会被篡改。如果想了解其他类型的基于会话的数据传递,请查看WS-SecureConversation、WS-Trust和SAML标准。

    笔名:
    请您注意:

     遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

     天极网拥有管理笔名和留言的一切权利。
    相关内容