加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

[CF.Skills]在.NET Compact Framework中设置webservice的session

发布时间:2020-12-17 02:42:43 所属栏目:安全 来源:网络整理
导读:.NET CF中没有Cookie Container之类方便管理cookie的类,我刚刚简单的搜索了一下,找到一段用作Session管理器的代码:(原文见 这里) ???????? /**/ /// ? summary ???????? /// ?This?field?contains?the?received?session?cookie ???????? /// ? /summary ?
.NET CF中没有Cookie Container之类方便管理cookie的类,我刚刚简单的搜索了一下,找到一段用作Session管理器的代码:(原文见 这里)

???????? ///?<summary>

????????
///?This?field?contains?the?received?session?cookie

????????
///?</summary>

???????? private ? string ?cookie? = ? null ;


????????
///?<summary>

????????
///?Http-Header?for?the?request?SessionCookie

????????
///?</summary>

???????? private ? const ? string ?REQUESTHEADER_SESSIONCOOKIE? = ? " Cookie " ;


????????
///?<summary>

????????
///?Http-header?for?the?response?SessionCookie

????????
///?</summary>

???????? private ? const ? string ?RESPONSEHEADER_SESSIONCOOKIE? = ? " Set-Cookie " ;


????????
private ? void ?ProcessResponse(System.Net.HttpWebResponse?response)

????????
{

????????????
//?Is?the?cookie?present?in?the?response?

????????????if?(response.Headers.Get(RESPONSEHEADER_SESSIONCOOKIE)?!=?null)

????????????
{?

????????????????
//?Store?the?cookie

????????????????cookie?=?response.Headers.Get(RESPONSEHEADER_SESSIONCOOKIE);

????????????}

????????}


????????
///?<summary>

????????
///?This?override?will?tweak?the?request?to?allow?Session-cookies

????????
///?</summary>

????????
///?<returns>The?tweaked?request</returns>

???????? protected ? override ?System.Net.WebRequest?GetWebRequest(Uri?uri)

????????
{

????????????System.Net.HttpWebRequest?request?
=?(System.Net.HttpWebRequest)base.GetWebRequest(uri);


????????????
//?Is?the?session?cookie?cached?

????????????if?(cookie?!=?null)

????????????
{?

????????????????
//?Add?the?sessioncookie?to?the?request

????????????????request.Headers.Add(REQUESTHEADER_SESSIONCOOKIE,?cookie);

????????????}

????????????
return?request;

????????}


????????
///?<summary>

????????
///?This?override?will?tweak?the?response?to?allow?Session-cookies

????????
///?</summary>

????????? protected ? override ?System.Net.WebResponse?GetWebResponse(System.Net.WebRequest?request)

????????
{

????????????System.Net.HttpWebResponse?response?
=?(System.Net.HttpWebResponse)base.GetWebResponse(request);

????????????ProcessResponse(response);

????????????
return?response;

????????}


????????
///?<summary>

????????
///?This?override?will?tweak?the?response?to?allow?Session-cookies

????????
///?</summary>

???????? protected ? override ?System.Net.WebResponse?GetWebResponse(System.Net.WebRequest?request,?IAsyncResult?result)

????????
{

????????????System.Net.HttpWebResponse?response?
=?(System.Net.HttpWebResponse)base.GetWebResponse(request,?result);

????????????ProcessResponse(response);

????????????
return?response;

????????}
除了这种人工控制请求应答的消息头的方式,不知道在.NET CF中大家还有哪些方案来维系webservice的会话,不妨一同探讨一下:-) Regards 黄季冬

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读