国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
IIS6,SESSION失效的解決

ASP(Active Server Pages)技術(shù)的Session對(duì)象用于存儲(chǔ)用戶在對(duì)話期間的私有信息。當(dāng)前用戶的Session對(duì)象中定義的變量和對(duì)象能在頁(yè)面之間共享,但是不能為應(yīng)用中其他用戶所訪問(wèn),因此在用ASP開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用程序時(shí),可以利用Session對(duì)象保存和跟蹤用戶的狀態(tài)信息。
Session對(duì)象有一個(gè)十分重要的屬性:Timeout,它用于設(shè)置在會(huì)話資源被釋放前,會(huì)話對(duì)象所能保持非活動(dòng)狀態(tài)的時(shí)間(默認(rèn)值為20分鐘)。當(dāng)Timeout屬性設(shè)置的時(shí)間值耗盡后,會(huì)話資源將被釋放。通過(guò)Timeout屬性破壞Session對(duì)象,避免了Session對(duì)象在服務(wù)器中無(wú)限制地產(chǎn)生,保護(hù)了服務(wù)器資源。

同理,ASP.NET中的Session繼承了以上功能。那么這里簡(jiǎn)單談?wù)凷ession的Timeout的一些設(shè)置(即Session的有效期)。
最簡(jiǎn)單的設(shè)置方式延長(zhǎng)Session有效期。
1、設(shè)置網(wǎng)站的應(yīng)用程序配置

2、設(shè)置ASP.NET中的配置,修改webconfig文件。(也可以通過(guò)代碼添加)
web.config 的 system.web 里添加如下配置項(xiàng):
< httpRuntime
executionTimeout="30"
/>
3、Session儲(chǔ)存的位置絕對(duì)不在客戶端。Session儲(chǔ)存方式有三種,可在web.config中設(shè)置。
InProc模式,這種模式下Session保存在ASP.NET的進(jìn)程內(nèi),是一個(gè)內(nèi)部容器,在同一個(gè)應(yīng)用程序目錄是共享的,但是如果這個(gè)進(jìn)程被Web服務(wù)器回收,則Session就會(huì)丟失,所以這種模式很不穩(wěn)定。
StateServer模式,這種模式下Session被保存在一個(gè)Windows Service的進(jìn)程內(nèi),Windows Service的進(jìn)程比ASP.NET的進(jìn)程穩(wěn)定得多,只要開(kāi)啟這個(gè)服務(wù)的電腦不當(dāng)機(jī),一般來(lái)說(shuō)都是比較穩(wěn)定的。
SQL Server模式,這種模式就更進(jìn)一步,將Session保存到了數(shù)據(jù)庫(kù)中,通過(guò)犧牲效率換取穩(wěn)定。
也可通過(guò)ASP.NET配置設(shè)置

4、存儲(chǔ)的類型和大???
一般來(lái)說(shuō),InProc模式下,Session對(duì)儲(chǔ)存的對(duì)象沒(méi)有任何限制。而在StateServer和SQL Server模式中,由于Session需要跨進(jìn)程保持,所以要求所儲(chǔ)存對(duì)象的類型必須是可序列化的。雖然Session對(duì)所儲(chǔ)存的數(shù)據(jù)大小沒(méi)有什么限制,但不建議在Session中儲(chǔ)存太多的東西。

5、生命周期是怎么樣的?
正常情況下Session在新的客戶端第一次訪問(wèn)頁(yè)面時(shí)創(chuàng)建,在超過(guò)超時(shí)時(shí)間沒(méi)有任何頁(yè)面訪問(wèn)后銷毀。

6、常見(jiàn)的訪問(wèn)方法
一般來(lái)說(shuō)Session這種公用容器需要為期專門撰寫訪問(wèn)類,而不應(yīng)直接訪問(wèn)。
一個(gè)簡(jiǎn)單的訪問(wèn)類可能看起來(lái)是這樣的:

public MyContext
{
public static MyContext Current
{
    get { return HttpContext.Current.Session["hnop"] as MyContext; }
    set { HttpContext.Current.Session["hnop"] = value; }
}
}


7、比較
Session的特點(diǎn)很突出,就是他與客戶端有關(guān),一般來(lái)說(shuō)只要客戶端不關(guān)閉瀏覽器,那么他訪問(wèn)的所有的頁(yè)面所獲得的都是同一個(gè)Session容器。我們可以往Session中放入用戶相關(guān)的信息,如登陸信息。但要注意的是,Session是一個(gè)公共容器,所以他里面的信息可以被任何運(yùn)行在服務(wù)器上的代碼所修改。

===========================================================================================================

ASP.Net中的Session
如果用戶關(guān)閉了Cookie,Session的值一樣也可以被保存。
config.web文件進(jìn)行一些配制,因?yàn)樵谄渲姓业疥P(guān)于Session
的設(shè)置文本,如:
<
sessionstate cookieless="false" />
把cookieless="false" 改成cookieless="true" ,那么以后Session就不儲(chǔ)存在cookies中了,而在儲(chǔ)存在URL中。

 

Session還能在另外一臺(tái)主機(jī)上保持:把localhost改成您要的主機(jī)
<
sessionstate inproc="false" server="localhost" port="42424" />

 

===========================================================================================================

摘錄自:http://www.lslnet.com/linux/docs/linux-4141.htm

Application狀態(tài)為應(yīng)用程序提供了一個(gè)全局的狀態(tài)。所有客戶都可以使用該狀態(tài)。從設(shè)計(jì)的角度來(lái)說(shuō),我們通常用Application來(lái)存儲(chǔ)一些標(biāo)準(zhǔn)的數(shù)據(jù)。同時(shí),我們?cè)谑褂盟鼤r(shí)要注意避免性能的降低,存儲(chǔ)的數(shù)據(jù)盡可能提供給客戶只讀的功能。

我們可以使用HttpApplication類的Application屬性來(lái)訪問(wèn)Application狀態(tài),它返回一個(gè)HttpApplicationState類的實(shí)例。這個(gè)類是一個(gè)對(duì)象集合,可以存儲(chǔ)任何類型的數(shù)據(jù),并以鍵/值對(duì)的形式存儲(chǔ)。一旦數(shù)據(jù)被存儲(chǔ)到狀態(tài)后,就不會(huì)刪除,除非應(yīng)用程序重新啟動(dòng)或者被終止或回收。

我們可以在Global.asax的Application_Start函數(shù)中存儲(chǔ)數(shù)據(jù): void Application_Start(object src, EventArgs e) { int exp = 0; // population of dataset from ADO.NET query not shown // Cache DataSet reference Application["Experiment"] = exp; }

現(xiàn)在你可以在任意頁(yè)面下使用它:

private void Page_Load(object src, EventArgs e) { int expr = Int32.Parse((Application["Experiment"])); }

由于Application狀態(tài)對(duì)于所有客戶都是共享的,如果客戶只是讀取該數(shù)據(jù),則沒(méi)有什么問(wèn)題,一旦要進(jìn)行寫操作,就不能保證線程的安全以及出現(xiàn)同步爭(zhēng)用的問(wèn)題。我們可以使用HttpApplicationStateLock類,它派生于ReadWriteObjectLock類,它提供了讀/寫鎖的兩種屬性。在ASP.Net下,隱式地調(diào)用了AcquireWrite()和AcquireRead()方法以保證避免上面的問(wèn)題。當(dāng)然,我們也可以顯示地使用Lock()和Unlock():

private void Page_Load(object sender, System.EventArgs e) { Application.Lock(); int expr = Int32.Parse((Application["Experiment"])); if (expr>=something) { //do something } Else { //do something else } Application.UnLock(); //Some other thing goes here }

session,cookie,view狀態(tài)都是用來(lái)保存客戶端信息的。它們之間又有什么區(qū)別呢?

Session狀態(tài)是在客戶登錄的時(shí)候創(chuàng)建的,它保存了客戶特定的信息,并以Session ID來(lái)標(biāo)識(shí)。當(dāng)一個(gè)新客戶訪問(wèn)應(yīng)用程序時(shí),先生成一個(gè)新的Session ID(或是Session Key),并為同一個(gè)客戶接下來(lái)的請(qǐng)求創(chuàng)建聯(lián)系。你可以在Session State中存儲(chǔ)任意類型的數(shù)據(jù),作為你的應(yīng)用,狀態(tài)被同一個(gè)進(jìn)程和AppDomain(App域)維護(hù)。Session State的特點(diǎn)是為每一個(gè)特定的客戶創(chuàng)建狀態(tài)以維護(hù)客戶的信息,這些狀態(tài)信息存儲(chǔ)在服務(wù)器端的默認(rèn)的會(huì)話狀態(tài)配置中。

Session(“Value”) = expr ; // Storing the data into session object SomeFunction() { int expr = Int32.Parse(Session(“Value”));//Accessing from it if (expr>=something) { //do something } Else { //do something else } //Some other thing goes here }

既然Session State針對(duì)特定的客戶建立,通過(guò)它來(lái)識(shí)別客戶的請(qǐng)求。Asp.Net提供了一種加密機(jī)制和編碼算法生成自己的Session Key。這是非常必要的,因?yàn)橹懒四愕腟ession Key,就有權(quán)限訪問(wèn)指定的頁(yè)面了。

在ASP.Net中生成Session Key的方法:

byte[] sessionkey = new byte[15];

//Generates a random number RNGCryptoServiceProvider rngkey = new RNGCryptoServiceProvider (); rngkey.GetBytes (sessionkey); string clientsessionKey = SessionId.Encode (sessionkey);

但是Session和客戶端的Cookie是有關(guān)的,當(dāng)客戶關(guān)掉Cookie時(shí),Session就失效了。不過(guò)在ASP.Net 中可以在web.config中修改設(shè)置,使Session的傳遞脫離Cookie。方法是:

對(duì)于Cookie大家并不陌生,每個(gè)Cookie存儲(chǔ)了多個(gè)名/值對(duì),我們可以通過(guò)HttpCookie類的值集合來(lái)訪問(wèn)它,也可以間接地通過(guò)類所提供的索引器訪問(wèn)。Cookie在ASP.Net下的使用: protected void Page_Load(Object sender, EventArgs E) { int expr = 0; if (Request.Cookies["Expr"] == null) { // "Expr" cookie not set, set with this response HttpCookie cokExpr = new HttpCookie("Expr"); cokExpr.Value = exprTextBox.Text; Response.Cookies.Add(cokExpr); expr = Convert.ToInt32(exprTextBox.Text); } else { // use existing cookie value... expr = Convert.ToInt32(Request.Cookies["Expr"].Value); } // use expr to customize page }

由于Cookie存儲(chǔ)的信息是放到客戶端的,用戶在訪問(wèn)服務(wù)器端頁(yè)面時(shí),必然在客戶端和服務(wù)器端之間頻繁交換信息,影響了程序的性能。而Session由于存儲(chǔ)在服務(wù)器內(nèi)存中,因此不存在這個(gè)問(wèn)題。不過(guò),Session存儲(chǔ)的信息是臨時(shí)的,用戶一旦關(guān)閉瀏覽器,狀態(tài)即失去。而Cookie則相反。

至于View State,主要是指控件和頁(yè)面的狀態(tài)信息,它以_VIEWSTATE值傳遞給服務(wù)器端。有興趣的可以看我另外一篇文章:ASP.Net中控件的EnableViewState屬性

Application、Session和Cookie,可以借用Carfield的總結(jié):

COOKIE 是本地文件,是 40 大盜在阿里巴巴家做的記號(hào),或者是送牛奶的人在你家門口釘?shù)南渥印?/p>

SESSION 是服務(wù)器端內(nèi)存,是你洗澡時(shí)浴池發(fā)給你的鑰匙。自己專用,可以開(kāi)自己的好多箱子。

APPLICATION 是公共浴池。在這里能看見(jiàn)所有人,包括 ppmm 哦:)。

 

 

1
IIS6,SESSION超時(shí)時(shí)間過(guò)短的解決。通常在主目錄->配置->應(yīng)用程序選項(xiàng)重設(shè)置會(huì)話時(shí)間,默認(rèn)20,單位分鐘。另外還可以修改配置文件METABASE.XML的ASPSESSIONTIMEOUT項(xiàng)實(shí)現(xiàn)。但這次沒(méi)有起作用。去掉了站點(diǎn)本身的可能,最后把目標(biāo)放在應(yīng)用程序池上。打開(kāi)網(wǎng)站對(duì)應(yīng)的應(yīng)用程序池屬性,將WEB園數(shù)量改為1。重啟IIS后,session正常。


2
IIS6下面默認(rèn)SESSION的超時(shí)時(shí)間是20秒,造成一些程度認(rèn)證信息丟失,檢查發(fā)現(xiàn)這是由于META-BA**.*ML的設(shè)置里面ASPSESSIONTIMEOUT="20"引起的。一般可以考慮改為900或者1200。
這個(gè)設(shè)置文件在WINDOWS/SYSTEM32/INETSRV下面。

注意修改之前需要停掉IISADMIN服務(wù)。改完了重啟W3SVC就可以用了。


3
應(yīng)用程序池DefaultAppPool關(guān)閉超時(shí)錯(cuò)誤2007年03月15日 12:15今天服務(wù)器產(chǎn)生“應(yīng)用程序池 'DefaultAppPool' 提供服務(wù)的進(jìn)程關(guān)閉時(shí)間超過(guò)了限制。進(jìn)程 ID 是 '2068'。”的錯(cuò)誤,導(dǎo)致iis處于假死狀態(tài),而這樣的情況在前期數(shù)量少的網(wǎng)站情況下沒(méi)有發(fā)生。后來(lái)通過(guò)搜索相關(guān)網(wǎng)站,才了解是IIS應(yīng)用程序池的設(shè)置問(wèn)題。解決方法如下:

右擊應(yīng)用程序池DefaultAppPool,選取屬性:
一、回收
1、回收工作進(jìn)程(分鐘):選中,值為1740
2、回收工作進(jìn)程(請(qǐng)求數(shù)目):不選(原先設(shè)置為35000)
3、在下列時(shí)間回收工作進(jìn)程:不填
4、消耗太多內(nèi)存時(shí)回收工作進(jìn)程:全不選。(2、3、4項(xiàng)可能避免了在訪問(wèn)量高的時(shí)候強(qiáng)制回收進(jìn)程可能引發(fā)的服務(wù)器響應(yīng)問(wèn)題,導(dǎo)致iis假死不響應(yīng))
二、性能
      只選中空閑超時(shí)20分鐘。其他都不選。WEB園最大工作進(jìn)程數(shù)為1(默認(rèn))。注意web園這里一定要保持默認(rèn),如果填寫其他超過(guò)1的數(shù)字就會(huì)導(dǎo)致一些網(wǎng)站程序的后臺(tái)程序打不開(kāi)或者刷新不停。

原來(lái)的請(qǐng)求隊(duì)列限制為4000,現(xiàn)在無(wú)限制。
三、運(yùn)行狀況
      前兩項(xiàng)都起用,是原來(lái)的默認(rèn)設(shè)置。啟動(dòng)時(shí)間限制90秒,關(guān)閉時(shí)間限制180秒。

“關(guān)閉時(shí)間限制180秒”是必須的,因?yàn)檫M(jìn)程關(guān)閉的時(shí)間,原來(lái)為90秒限制,是默認(rèn)值,如果進(jìn)程關(guān)閉時(shí)間超過(guò)90秒,則認(rèn)為超時(shí),從而出現(xiàn):進(jìn)程關(guān)閉時(shí)間超過(guò)了限制 日志,所以,適當(dāng)延長(zhǎng)這個(gè)時(shí)間,可以避免這種錯(cuò)誤




.Net WebService(也包括一般意義的 HttpWebRequest) 超時(shí)設(shè)置

.Net WebService(也包括一般意義的 HttpWebRequest) 超時(shí)設(shè)置

1. 服務(wù)器端設(shè)置超時(shí)

web.config 的 system.web 里添加如下配置項(xiàng):

< httpRuntime
executionTimeout="30"
/>

以上時(shí)間單位是秒.

記得要把 web.config 的 debug 模式關(guān)閉:

< compilation
defaultLanguage="c#"
debug="false"
/>

如果 debug 模式?jīng)]有關(guān)閉, executionTimeout 會(huì)被忽略. 這時(shí)候, 如果應(yīng)用是在單步跟蹤的模式下, 根據(jù)經(jīng)驗(yàn), 超時(shí)時(shí)間大約是 90 秒(在 machine.config 里設(shè)置的, 我猜的^_^), 如果不是在單步跟蹤的模式下, 超時(shí)時(shí)間可能是 20 分鐘(也是我猜的, 因?yàn)槠?session 的缺省超時(shí)時(shí)間是 20 分鐘, 哈). 我懶得找微軟的文檔作進(jìn)一步的求證了, 反正我用不著知道 debug 模式下的確切超時(shí)時(shí)間.

2. 客戶端設(shè)置超時(shí)

在 WebService 的客戶端代理程序(用 wsdl.exe 生成)里設(shè)置 Request 超時(shí)時(shí)間, 單位是毫秒:
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest wr = (HttpWebRequest)base.GetWebRequest( uri );
wr.Timeout = 30*1000;
return wr;
}

 

 

 

 

 

 

 

從同一個(gè)頁(yè)面?zhèn)鞯搅硪粋€(gè)頁(yè)面才能延續(xù)同一個(gè)session,也就是說(shuō)session不可跨域,同時(shí)客戶端一關(guān)閉瀏覽器或一關(guān)閉瀏覽頁(yè) Session也消失了,再次訪問(wèn)時(shí)又會(huì)創(chuàng)建新的Session 但還會(huì)在服務(wù)器上存活等待超時(shí),只是調(diào)用不到了.  另外比如在第一個(gè)頁(yè)面置了SESSION,然后REDIRECT去第二個(gè)頁(yè)面。解決方法是在REDIRECT中設(shè)置endResponse為FALSE。

  Iframe丟Session的原因:session是客戶端和服務(wù)器端共同認(rèn)證的,客戶端存儲(chǔ)標(biāo)識(shí),通過(guò)附加在頁(yè)面的頭發(fā)送給服務(wù)器端,服務(wù)器進(jìn)行識(shí)別,如果符合條件就可以獲得相應(yīng)的session操作權(quán)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用Microsoft Web Application Stress Tool對(duì)web進(jìn)行...
轉(zhuǎn)貼一篇很不錯(cuò)的有關(guān)ASP.NET Session的分析文章
ASP.NET Session丟失問(wèn)題解決方案總結(jié)及判斷Session是否過(guò)期【轉(zhuǎn)載】
ASP.NET中Session的狀態(tài)保持方式
IIS網(wǎng)站應(yīng)用程序初始化和預(yù)加載
IIS6.0和ASP.NET最佳實(shí)踐
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服