国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

在ASP.NET中使用Session常見問題總結

開發 后端
本文總結了一些asp.net中使用Session的問題,希望對大家有所幫助。

在ASP.NET中使用Session經常遇到一些問題,下面總結一下。

問:為什么Session在有些機器上偶爾會丟失?

答:可能和機器的環境有關系,比如:防火墻或者殺毒軟件等,嘗試關閉防火墻。

問:為什么當調用Session.Abandon時并沒有激發Session_End方法?

答:首先Session_End方法只支持InProc(進程內的)類型的Session。其次要激發Session_End方法,必須存在Session(即系統中已經使用Session了),并且至少要完成一次請求(在這次請求中會調用該方法)。

問:為什么當我在InProc模式下使用Session會經常丟失?

答:該問題通常是由于應用程序被回收導致的,因為當使用進程內Session時,Session是保存在aspnet_wp進程中,當該進程被回收Session自然也就沒有了,確定該進程是否被回收可以通過查看系統的事件查看器獲得信息。

具體信息請參考:

Session variables are lost intermittently in asp.net applicationshttp://support.microsoft.com/default.aspx?scid=kb;en-us;Q316148

在1.0的時候也有一個bug會導致工作進程被回收并重啟,該bug已經在1.1和sp2中修復。

關于該bug的詳細信息請參考:

asp.net Worker Process (Aspnet_wp.exe) Is Recycled Unexpectedly. http://support.microsoft.com/default.aspx?scid=kb;en-us;Q321792

問:為什么當Session超時或者Abandoned后,新Session的ID和原來的相同?

答:因為SessionID是保存在客戶端瀏覽器的實例里,當Session超時在服務器重新建立Session時,將使用瀏覽器傳來的SessionID,所以當Session超時后,再重新建立后SessionID并不變。

問:為什么每次請求的SessionID都不相同?

答:該問題可能是沒有在Session里面保存任何信息引起的,即程序中任何地方都沒有使用Session。當Session中保存信息之后SessionID將一直和瀏覽器相關,此時的SessionID將不會在變化。

問:ASP和asp.net之間是否可以共享Session?

答:可以。但是這是一個比較復雜的過程,微軟提供了官方的解決方案,請參考:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ConvertToASPNET.asp

問:什么類型的對象可以保存在Session里?

答:這依賴使用的Session的模式,當使用的是進程內(InProc)的Session那么可以輕松的保存任何對象。如果你使用了非InProc的模式,則只能保存可以序列化和反序列化的對象,如果此時保存的對象不支持序列化,則不能保存到這種模式(非InProc)的Session里。

問:為什么在Session_End中不能使用Response.Redirect和Server.Transfer方法跳轉頁面?

答:Session_End是一個在服務器內部激發的事件處理函數。它是基于一個服務器內部的計時器的,在激發該事件時服務器上并沒有相關的HttpRequest對象,因此此時并不能使用Response.Redirect和Server.Transfer方法。

問:在Session_End中是否可以獲得HttpContext對象?

答:不行,因為這個事件并沒有和任何的請求(Request)相關聯,沒有基于請求的上下文。

問:在Web Service中該如何使用Session?

答:為了在Web Service中使用Session,需要在Web Service的調用方做一些額外的工作,必須保存和存儲調用Web Service時使用的Cookie。詳細信息請參考MSDN文檔的HttpWebClientProtocol.CookieContainer屬性。然而,如果你使用代理服務器訪問Web Service由于框架的限制,兩者不能共享Session。

問:在自定義自己的HttpHandler的時候,為什么不能使用Session?

答:在實現自己的HttpHandler的時候,如果希望使用Session必須實現下面的兩個標記接口中的一個:IRequiresSessionState和IReadOnlySessionState,這些接口沒有任何方法需要實現,只是一個標記接口和使用INamingContainer接口的方法一樣。

問:當我使用webfarm時,當我重定向到其他的Web服務器時Session為什么會丟失?

答:詳細信息請參考:

PRB: Session State Is Lost in Web Farm If You Use SqlServer or StateServer Session Modehttp://support.microsoft.com/default.aspx?scid=kb;en-us;325056

問:為什么我的Session在Application_OnAcquireRequestState方法中無效?

答:Session只有在HttpApplication.AcquireRequestState事件調用以后才會有效。

詳細信息請參考:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconhandlingpublicevents.asp

問:如果使用了cookieless,我該如何從HTTP頁面定向到HTTPS?

答:請嘗試下面的方法:

String originalUrl = "/fxtest3/sub/foo2.aspx";

String modifiedUrl = "https://localhost" + Response.ApplyAppPathModifier(originalUrl);

Response.Redirect(modifiedUrl);

問:Session在global.asax中的那些事件中有效?

答:Session只有在AcquireRequestState事件之后有效,該事件之后的事件都可以使用Session。

問:如何獲得當前Session中保存的所有對象?

答:可以通過遍歷所有的Session.Keys來獲得。代碼如下:

ArrayList sessionCollection = new ArrayList();

foreach (string strKey in Session.Keys){

sessionCollection.Add(Session[strKey]);

}

問:是否可以在不同的應用程序中共享Session?

答:不能直接共享。可以參考如何在ASP和asp.net之間共享Session。

問:Session.Abandon和Session.Clear有何不同?

答:主要的不同之處在于當使用Session.Abandon時,會調用Session_End方法(InProc模式下)。當下一個請求到來時將激發Session_Start方法。而Session.Clear只是清除Session中的所有數據并不會中止該Session,因此也不會調用那些方法。

問:為了可以順序訪問Session的狀態值,Session是否提供了鎖定機制?

答:Session實現了Reader/Writer的鎖機制:

當頁面對Session具有可寫功能(即頁面有< %@ Page EnableSessionState="True" %>標記),此時直到請求完成該頁面的Session持有一個寫鎖定。

當頁面對Session具有只讀功能(即頁面有< %@ Page EnableSessionState="ReadOnly" %>標記),此時知道請求完成該頁面的Session持有一個讀鎖定。

讀鎖定將阻塞一個寫鎖定;讀鎖定不會阻塞讀鎖定;寫鎖定將阻塞所有的讀寫鎖定。這就是為什么兩個框架中的同一個頁面都去寫同一個Session時,其中一個要等待另一個(稍快的那個)完成后,才開始寫。

問:Session平滑超時意味著什么?

答:Session平滑超時意味著只要你的頁面訪問(使用)了Session,超時時間將被刷新(可以理解為重新計時),即從該頁面請求開始,將重新計算超時時間。但是,該頁面不能禁用Session。它會自動的訪問當前頁面的Session,刷新超時時間。

問:在global.asax中的事件處理函數中Session為什么無效?

答:依賴于在哪個事件處理函數中使用Session,Session在AcquireRequestState事件之后才有效,該事件之后的所有事件處理函數都可以使用Session,之前的則不能。

問:當我寫一個依賴于當前應用的Session的組件時,為什么不能直接使用Session["Key"]獲得其值?

答:Session["Key"]實際上是this.Session["Key"],它是作為Page的一個屬性提供的,所以在你的組件中不能直接使用這個屬性。你可以通過下面的方式使用Session:

HttpContext.Current.Session["Key"] = "My Seesion Value";

問:當我使用InProc模式保存Session時,此時的Session是保存在哪里?

答:不同的IIS的處理方式不同,

當使用的是IIS5的時候Session是保存在aspnet_wp.exe的進程空間里的。

當使用的是IIS6時,默認情況下所有的應用程序共享應用程序池,Session保存在w3wp.exe的進程空間中。

問:在ASP.NET中使用Session時,Session的超時設置是分鐘還是秒?

答:是分鐘,默認為20分鐘。

問:當頁面出現錯誤后我的Session是否將被保存?我需要在Session_End中處理一些清理工作,但是失敗了,為什么?

答:Session_End只有在Session運行在InProc模式下才會被執行。Session_End使用的帳號是運行aspnet_wp工作進程的帳號(這個可以在machine.config中設置)。因此,如果在Session_End方法里,使用集成安全性鏈接到SQL,它將使用aspnet_wp進程的帳號打開鏈接,此時成功與否則依賴于你的SQL的安全性設置。

問:為什么當我設置cookieless為true是我在重定向的時候會丟失Session?

答:當使用cookieless時,你必須使用相對路徑替換程序中的絕對路徑,如果使用絕對路徑asp.net將無法在URL中保存SessionID。

例如:將myDirmySubdirdefault.aspx換成..default.aspx即可。

問:如何將SortedList存儲到Session或者Cache里?

答:請參考下面的方法:

  1. SortedList x = new SortedList();   
  2. x.Add("Key1""ValueA");   
  3. x.Add("Key2""ValueB");  

保存到Session中:

  1. Session["SortedList1"] = x;  

使用下面方法獲得之:

  1. SortedList y = (SortedList) Session["SortedList1"];  

Chahe則同理。

問:我為什么會獲得這樣的錯誤信息“Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive”?

答:這個問題可能在一個已經安裝了Microsoft Visual Studio .NET開發環境的機器上,再安裝Window Sharepoint Server(WSS)后出現。

WSS ISAPI過濾器會處理所有的請求。當你通過虛擬目錄瀏覽一個asp.net的應用程序時,ISAPI過濾器不會給文件夾目錄分配URL。

解決方法是:不要再安裝了WSS的機器上使用Session。

詳細信息請參考:

Session state cannot be used in asp.net with Windows SharePoint Serviceshttp://support.microsoft.com/default.aspx?scid=kb;en-us;837376

問:如何刪除Session變量?

答:想要刪除Session變量可以使用HttpSessionState.Remove()方法。

問:是否有辦法知道應用程序的Session在運行時占用了多少內存?

答:沒有。目前這個值時無法考證的,至少我現在還沒有看到這方面的資料。但是可以通過性能監視器以及程序代碼大概估算出來一個值。

問:當頁面中是否了frameset,發現在每個frame中顯示頁面的SessionID在***次請求時都不相同,為什么?

答:原因是你的frameset是放在一個htm頁面上而不是ASPX頁面。

在一般情況下,如果frameset是aspx頁面,當你請求頁面時,它首先將請求發送到Web服務器,此時已經獲得了SessionID,接著瀏覽器會分別請求Frame中的其他頁面,這樣所有頁面的SessionID就是一樣的,就是FrameSet頁面的SessionID。

然而如果你使用Html頁面做FrameSet頁面,***個請求將是HTML頁面,當該頁面從服務器上返回是并沒有任何Session產生,接著瀏覽器會請求Frame里面的頁面,這樣這些頁面都會產生自己的SessionID,所以在這種情況下就會出現這種問題。當你重新刷新頁面時,SessionID就會一樣,并且是***一個請求頁面的SessionID。

問:是否可以將不同應用程序的Session保存在相同的SQL Server服務器的不同數據庫上。

答:可以,請參考:

FIX: Using one SQL database for all applications for SQL Server session state may cause a bottleneckhttp://support.microsoft.com/default.aspx?scid=kb;en-us;836680

問:在Session_End是我是否可以獲得有效的HttpSessionState和HttpContext對象?

答:你可以在這個方法中獲得HttpSessionState對象,可以直接使用Session來訪問即可。但是不能獲得HttpContext對象,因為該事件并沒有和任何請求相關聯,因此不存在上下文對象。

問:在SQLServer模式下使用Session,為什么我的Session不過期?

答:在SqlServer模式下,Session的過期是通過SQL Agent的注冊工作完成的,請檢查你的SQL Agent是否運行?

問:當我設置EnableSessionState為“ReadOnly”后,但是我在InProc模式下依然可以修改Session的值,這是為什么?

答:即使EnableSessionState標示為ReadOnly,但是在InProc模式下用戶依然可以編輯Session。唯一不同的是,在請求過程中Session將不會被鎖住。

問:我如何才能避免在鏈接SQL時指定密碼?

答:使用信任鏈接或者使用加密的鏈接串。有關這方面的詳細信息請參考:

How To Use the asp.net Utility to Encrypt Credentials and Session State Connection Strings http://support.microsoft.com/default.aspx?scid=kb;en-us;329290

問:我在我自己的類中該如何使用Session呢?

答:可以使用HttpContext.Current.Session方式使用,具體方法如下:

HttpContext.Current.Session["SessionKey"] = "SessionValue";

類似的你還可以使用這種方式使用Application對象。

問:為什么在切換成SQLServer模式后我的請求被掛起了?

答:檢查在Session里面是否都保存的是可以保存在SQLServer模式下的對象,即這些對象必須支持序列化。

問:當Session設置成cookieless后會有什么影響?

答:當把cookieless設置成true時,主要會有下面的約束:

1、在頁面中不能使用絕對鏈接

2、在應用程序中在除了Http和Https之間的切換時需要完成一些其他的步驟。

如果發送一個鏈接給其他人,此時的URL里面將包含Session ID的信息,所以兩個人將公用一個Session。

問:是否可以將Session保存在數據庫中?

答:當然可以,詳細信息請參考:http://support.microsoft.com/default.aspx?scid=kb;en-us;311209 

以上就是在ASP.NET中使用Session常見問題總結,希望對大家有所幫助。

【編輯推薦】

  1. ASP.NET1.1驗證碼產生的原理及應用
  2. 靜態文件處理:ASP.NET1.1和ASP.NET2.0對之不同
  3. 在ASP.NET中執行windows程序(ASP.NET1.1)
  4. 對asp.net1.1開發模板類的修改說明
  5. 用ASP.NET連接Oracle9i(ASP.NET1.1)
責任編輯:book05 來源: csdn
相關推薦

2009-07-20 16:45:41

使用StringBuiASP.NET

2009-05-05 14:02:14

PlaceHolder控件ASP.NET

2009-08-03 10:07:20

ASP.NET Ses

2009-08-25 17:42:41

ASP.NET新手問題

2009-07-22 18:02:26

ASP.NET Ses

2009-07-24 15:35:00

ASP.NET連接Or

2009-02-05 13:40:03

TreeviewXMLASP.NET

2009-07-29 16:31:39

ASP.NET安裝部署

2009-07-20 17:16:46

IIS中使用ASP.N

2009-07-22 17:50:14

2009-07-28 16:57:50

ASP.NET Ses

2009-01-03 08:41:51

Ajax無框架的AjaxASP.NET

2009-07-22 09:36:54

使用UpdataModASP.NET MVC

2009-07-29 10:19:48

Session StaASP.NET

2009-07-23 18:56:50

ASP.NET Ses

2025-04-16 10:12:13

2021-03-17 09:45:31

LazyCacheWindows

2021-02-02 16:19:08

Serilog日志框架

2009-07-21 17:27:12

UpdateProgrASP.NET AJA

2021-02-06 21:40:13

SignalR通訊TypeScript
點贊
收藏

51CTO技術棧公眾號

国产成人精品免费看在线播放| 国产欧美一区二区在线观看| hd国产人妖ts另类视频| 人妻少妇精品久久| 老牛影视免费一区二区| 91高潮精品免费porn| 亚洲跨种族黑人xxx| 在线免费观看不卡av| 青青艹视频在线| 国产精品日韩一区二区| 2019av中文字幕| 日韩中文字幕第一页| 亚洲成人网在线| 欧美视频在线不卡| 懂色av一区二区三区| 亚洲精品美腿丝袜| 红杏aⅴ成人免费视频| xxx.xxx欧美| 一区二区三区不卡在线| 91嫩草免费看| 国产色视频一区| 热门国产精品亚洲第一区在线| 久久精品亚洲热| 在线观看成人黄色| 亚洲丝袜一区在线| 亚洲香蕉成人av网站在线观看| 欧美v日韩v国产v| 久久久久久一级片| www激情久久| 国产欧美一二三区| 亚洲国产成人一区二区三区| 久久精品亚洲乱码伦伦中文 | 亚洲国产精品专区久久| 精品裸体舞一区二区三区| 日韩欧美高清dvd碟片| 欧美变态tickling挠脚心| 亚洲国产欧美一区二区三区同亚洲| 日韩激情片免费| 久久精品99国产精品酒店日本| 欧美第一淫aaasss性| 国产精品男人爽免费视频1| 91嫩草在线| ijzzijzzij亚洲大全| 国产成人久久婷婷精品流白浆| 欧美成人黑人猛交| 中日韩一区二区三区| 成人福利在线观看视频| 成人国产激情在线| 曰本一区二区三区视频| 国产日韩欧美一区| 91浏览器在线视频| 欧美在线免费视屏| 日韩在线视频一区| 97超碰人人看人人 | 日本另类视频| 色一区二区三区四区| 美国一区二区三区在线播放| 国产日韩影视精品| 91精品一区二区三区久久久久久 | 欧美一级片久久久久久久| 91亚洲精品在线| 中文字幕色呦呦| 日本欧洲一区| yellow字幕网在线| 亚洲国产精品嫩草影院久久av| 一本色道久久综合| 久久影院电视剧免费观看| 一本大道综合伊人精品热热| 精品伊人久久97| 国产精品久久久久高潮| 国产尤物99| 最全影音av资源中文字幕在线| 搞黄网站在线看| 精品高清在线| 国产伦精品一区二区三区在线观看| 亚洲欧美日韩系列| 亚洲精品视频免费在线观看| 成人免费视频网| 亚欧无线一线二线三线区别| 国产二区在线播放| 欧美电影在线观看免费| 国产精品77777| 欧美性三三影院| 91日韩在线播放| 五月天av在线播放| 国产国产一区| 国产精品自拍av| 日韩一级视频免费观看在线| 国产精品亚洲自拍| 孩娇小videos精品| avtt久久| 久久精品亚洲麻豆av一区二区 | 免费福利片在线观看| 欧美激情亚洲自拍| 欧美老女人在线| 日韩欧美国产麻豆| 国产成人91久久精品| 一区高清视频| 欧美性猛片xxxxx免费中国| 欧美国产精品| 亚洲制服丝袜av| 91wwwcom在线观看| 成人性生生活性生交12| 欧美在线一级| 91影院在线观看| www.亚洲免费视频| 无码人妻少妇伦在线电影| 色诱色偷偷久久综合| av亚洲产国偷v产偷v自拍| 亚洲免费成人av电影| 无码熟妇人妻av在线电影| 日韩a**中文字幕| 99精品视频一区二区三区| 尤物九九久久国产精品的分类| 亚洲色图都市激情| av漫画网站在线观看| 久久婷婷色综合| 浅井舞香一区二区| 在线色视频观看| 国产亚洲精品bv在线观看| 日本在线播放一区二区三区| 性欧美videos另类喷潮| 国产情人综合久久777777| 中文字幕在线观看一区二区| 狠狠色丁香久久婷婷综合丁香| 中文国产一区| 日本麻豆一区二区三区视频| 日韩制服丝袜av| 欧美日韩中文字幕一区| 中文子幕无线码一区tr| 97免费高清电视剧观看| 成人动漫在线免费观看| 亚洲黄色av一区| 深田咏美在线x99av| av超碰免费在线| 国产福利91精品一区| 欧美性受xxxx白人性爽| 国产成人午夜精品| 国产理论在线| 久久精品国产免费看久久精品| 欧美国产国产综合| 亚洲成人黄色网| 精品婷婷色一区二区三区蜜桃| 中文字幕97| 欧美福利电影在线观看| 国产精品成人免费在线| 亚洲精品影视在线观看| 精品国产乱码久久久久久丨区2区| 黄页网址大全在线观看| 国产+成+人+亚洲欧洲在线| 久久成人免费网站| 99久久国产免费看| 欧美午夜精品免费| 亚州av一区| 日本在线视频网址| 久久精品日产第一区二区 | 欧美一站二站| 91精品久久久久久蜜臀| 黄色三级中文字幕| 久久99精品久久久野外观看| 欧美午夜精品伦理| 欧美一区二区三区综合| 国产免费久久| 亚洲精品98久久久久久中文字幕| 美女在线视频一区二区| 污污影院在线观看| 亚洲欧美另类久久久精品2019| 久久伦理网站| 凹凸成人精品亚洲精品密奴| 久久精品99久久久久久久久| 国产高清视频在线观看| 欧美国产一区二区在线观看| 欧美黑人3p| jiujiure精品视频播放| 色久欧美在线视频观看| 超碰porn在线| 欧美色播在线播放| 白嫩少妇丰满一区二区| 国产主播一区二区三区| 1卡2卡3卡精品视频| 你懂的视频欧美| 中文字幕亚洲欧美| 午夜影院免费在线| 欧美午夜影院一区| 黄视频在线观看免费| 一个色在线综合| av毛片免费| 中文字幕一区日韩精品欧美| 久久精品99国产| 久久久久久久久蜜桃| 日本五级黄色片| 国产美女娇喘av呻吟久久| 一区二区三区四区| 国产精品久久久免费| 精品999在线观看| 亚洲精品国产偷自在线观看| 91在线视频精品| 午夜久久美女| 国产一区二区高清不卡| 亚洲人体大胆视频|