簡體   English   中英

asp.net Web服務器是否按請求運行Web應用程序的新實例?

[英]Does an asp.net web-server run a new instance of a web application per request?

我有一個帶有私有/受保護方法或私有/受保護變量的Web應用程序

首先,我想知道Web服務器何時已為某個Web應用程序建立連接,然后接收新連接,它是否為此新連接運行Web應用程序的新實例,從而重新初始化所有變量那個Web應用程序就像在計算機上一樣?

我已經在互聯網上搞砸了,我非常困惑!

其次我使用的是visual studio開發服務器,我了解到它不接受來自其他計算機的連接,我通過使用端口轉發軟件解決了這個問題。 所以問題是,通過這樣做,VS2010網絡服務器將每個不同的請求視為新的請求或相同的請求,因為我從本地計算機上的應用程序轉發它們?

最后,如果我在一個瀏覽器上打開一個Web應用程序,然后決定在另一個瀏覽器上打開它並保持當前瀏覽器打開,這被視為新請求還是回復?

應用程序域是常量(可以回收),僅在第一個請求時創建(也可以在此之前設置)。

也就是說,所有靜態變量只初始化一次,但是每個請求都會初始化您的請求所依賴的所有非靜態類。

因此,基本上所有在普通asp.net中的頁面和asp.net MVC中的所有控制器都會在每個請求中初始化。

在這里閱讀更多相關信息http://www.codeproject.com/Articles/73728/ASP-NET-Application-and-Page-Life-Cycle

在此輸入圖像描述

*注意 - 圖像來自上面提到的文章

它有點復雜。 該過程針對多個連接進行了優化,並且是無狀態的,但是可以使用兌現來改善可擴展性:不需要重新處理的過程可以簡單地重復使用: http//www.dotnetfunda.com/articles/article821-beginners-guide -how-iis-process-aspnet-request.aspx是一個開始理解可以發生什么的好地方http://msdn.microsoft.com/en-us/library/bb470252%28v=vs.100%29.aspx是一個有點干燥的ms版本“iis asp頁面生命周期”是一個很好的谷歌

Web應用程序實例處理許多請求。 無論是單個會話還是多個並發會話,共享狀態(緩存等)都可以非常有效地用於這些請求。

發出請求時,會為該請求創建請求對象(以及任何“頁面”/“控制器”對象)。 此對象的狀態是新鮮的,但“會話狀態”,“查看狀態”,cookie和請求值等系統可用於重新填充它 - 有時很大程度上是自動化的。

單個用戶發出單獨的請求不是回發。 它們是單獨的會話,但即使是打開同一頁面兩次(標簽等)的單個會話也不是回發。 它主要取決於http動詞和其他證據來確定回發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM