[英]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.