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

.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 黄季冬

相关文章

1.使用ajax调用varxhr;functioninvoke(){if(window.ActiveXO...
               好不容易把WebService服务器...
1新建一个工程项目用来做服务端增加一个MyService1类文件pac...
packagecom.transsion.util;importjava.io.BufferedReader;i...
再生产wsdl文件时重写描述文件1usingSystem;2usingSystem.Co...
一般情况下,使用eclipse自带的jax-ws生成webservice会自动生...