溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何淺談ASP.NET應(yīng)用

發(fā)布時(shí)間:2021-10-28 10:05:57 來源:億速云 閱讀:135 作者:柒染 欄目:編程語言

如何淺談ASP.NET應(yīng)用,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

當(dāng)一個(gè)請求到來時(shí),它被路由到ISAPIRuntime.ProcessRequest() 方法.這個(gè)方法調(diào)用HttpRuntime.ProcessRequest方法,它作一些重要的事情(用Reflector查看 System.Web.HttpRuntime.ProcessRequestInternal方法):
◆為請求創(chuàng)建一個(gè)新的HttpContext實(shí)例
◆獲取一個(gè)HttpApplication實(shí)例
◆調(diào)用HttpApplication.Init()方法來設(shè)置管道的事件
◆Init()方法觸發(fā)開始ASP.NET管道處理的HttpApplication.ResumeProcessing()方法。

介紹ASP.NET應(yīng)用,首先一個(gè)新的HttpContext對象被創(chuàng)建并用來傳遞ISAPIWorkerRequest(ISAPI ECB的包裝器).這個(gè)上下文在整個(gè)請求的生命周期總都是可用的并總可以通過靜態(tài)屬性HttpContext.Currect來訪問.正像名字所暗示的那樣,HttpContext對象代表了當(dāng)前活動(dòng)請求的上下文因?yàn)樗嗽谡埱笊芷谥兴械湫偷哪阈枰L問的重要對象:Request,Response,Application,Server,Cache.在請求處理的任何時(shí)候 HttpContext.Current給你訪問所有這些的能力.

HttpContext對象也包含一個(gè)非常有用的Items集合,你可以用它來保存針對特定請求的數(shù)據(jù).上下文對象在請求周期的開始時(shí)被創(chuàng)建,在請求結(jié)束時(shí)被釋放,所有在Items集合中保存的數(shù)據(jù)只在這個(gè)特定的請求中可用.一個(gè)很好的使用的例子是請求日志機(jī)制,當(dāng)你通過想通過在 Global.asax中掛接Application_BeginRequest和Application_EndRequest方法記錄請求的開始和結(jié)束時(shí)間(象在列表3中顯示的那樣).HttpContext對你就非常有用了-如果你在請求或頁面處理的不同部分需要數(shù)據(jù),你自由的使用它.

protected void Application_BeginRequest(Object sender, EventArgs e)  {  //*** Request Logging  if (App.Configuration.LogWebRequests)  Context.Items.Add("WebLog_StartTime",DateTime.Now);  }   protected void Application_EndRequest(Object sender, EventArgs e)  {  // *** Request Logging  if (App.Configuration.LogWebRequests)  {  try  {  TimeSpan Span = DateTime.Now.Subtract( (DateTime) Context.Items["WebLog_StartTime"] );  int MiliSecs = Span.TotalMilliseconds;  // do your logging  WebRequestLog.Log(App.Configuration.ConnectionString,true,MilliSecs);  }  }  }


一旦上下文被設(shè)置好,ASP.NET需要通過HttpApplication對象將收到的請求路由到適合的應(yīng)用程序/虛擬目錄.每個(gè)ASP.NET應(yīng)用程序必須被設(shè)置到一個(gè)虛擬目錄(或者Web根目錄)而且每個(gè)”應(yīng)用程序”是被單獨(dú)的處理的。

HttpApplication類似儀式的主人-它是處理動(dòng)作開始的地方。

域的主人:HttpApplication

每個(gè)請求都被路由到一個(gè)HttpApplication對象上.HttpApplicationFactory類根據(jù)應(yīng)用程序的負(fù)載為你的 ASP.NET應(yīng)用創(chuàng)建一個(gè)HttpApplication對象池并為每個(gè)請求分發(fā)HttpApplication對象的引用.對象池的大小受 machine.config文件中ProcessModel鍵中的MaxWorkerThreads設(shè)置限制,默認(rèn)是20個(gè)(譯注:此處可能有誤,根據(jù) Reflector反編譯的代碼,池的大小應(yīng)該是100個(gè),如果池大小小于100,HttpApplicationFactory會(huì)創(chuàng)建滿100個(gè),但是考慮到會(huì)有多個(gè)線程同時(shí)創(chuàng)建HttpApplication的情況,實(shí)際情況下有可能會(huì)超過100個(gè))。

看完上述內(nèi)容,你們掌握如何淺談ASP.NET應(yīng)用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI