一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net刪除文件session丟失

asp.net刪除文件session丟失

2019-09-08 11:27asp.net之家 ASP.NET教程

如果你曾經修改了ASP.NET應用程序(dll文件),與修改了bin文件夾或Web.config文件(添加/刪除/重命名的文件等),而該網站在運行,你可能已經注意到,這將導致在AppDomain的重新啟動

如果你曾經修改了ASP.NET應用程序(dll文件),與修改了bin文件夾或Web.config文件(添加/刪除/重命名的文件等),而該網站在運行,你可能已經注意到,這將導致在AppDomain的重新啟動。所有的會話狀態會丟失和網站再次成功啟動,任何登錄的用戶將被退出(假設你不使用持久Cookie身份驗證)。 當然,當我們修改了web.config文件,并保存它,迫使一個AppDomain重新啟動,這是我們需要的。 

我們有時動態創建和刪除的文件夾,在ASP.NET 2.0中,文件夾刪除將導致一個AppDomain重新啟動,這將導致嚴重的問題。 例如,對于一個電子商務網站的產品,你可能想存儲在目錄中的產品來自它的名字ID的產品的圖片,例如。/ productImages/123/ipod-nano.jpg,甚至為身份證圖像的記錄。 這有助于避免與其他上載的文件和圖像文件名沖突。 當然,當你來到刪除從數據庫產品,你自然要刪除其相應的圖像和含有它的文件夾,但顯然不能因為這AppDomain重新啟動的問題。 因為,我們刪除留在我們的服務器中的空文件夾(文件刪除不會引起應用程序重新啟動)。 

解決方案 

幸運的是,我們有了Reflection and HttpModules的解決方案。 首先創建一個像.cs文件... 

復制代碼代碼如下:


using System.Reflection; 
using System.Web; 
namespace MyWebsite 

/// <summary> 
/// Stops the ASP.NET AppDomain being restarted (which clears 
/// Session state, Cache etc.) whenever a folder is deleted. 
/// </summary> 
public class StopAppDomainRestartOnFolderDeleteModule : IHttpModule 

public void Init(HttpApplication context) 

PropertyInfo p = typeof(HttpRuntime).GetProperty("FileChangesMonitor", 
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static); 
object o = p.GetValue(null, null); 
FieldInfo f = o.GetType().GetField("_dirMonSubdirs", 
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase); 
object monitor = f.GetValue(o); 
MethodInfo m = monitor.GetType().GetMethod("StopMonitoring", 
BindingFlags.Instance | BindingFlags.NonPublic); 
m.Invoke(monitor, new object[] { }); 

public void Dispose() { } 


如果您喜歡在 Application_Start使用Global.asax文件中,放置在Init()代碼在Application_Start 中。 我相信在Global.asax使用方法已過時,在使用HttpModules可以響應網絡(應用程序生命周期的會話開始,會話結束時,)。 init方法在Global.asax同Application_Start作用是一樣的,Dipose類似于Application_End。 

我們要以上述代碼起作用,需要在web.config文件<httpModules>區段中放入: 

<add name="stopAppDomainRestartOnFolderDelete" 
type="MyWebsite.StopAppDomainRestartOnFolderDeleteModule" /> 
需要說明的是,"stopAppDomainRestartOnFolderDelete"為自定義的任意名稱,"MyWebsite"為上述.cs文件中的命名空間,一般為項目名稱."StopAppDomainRestartOnFolderDeleteModule"為上述.cs文件中的類名. 

這就是它。 這將防止文件夾刪除AppDomain重新啟動,但修改web.config和bin文件夾時仍會重新啟動,這正是我們想要的。 

但是多刪除幾個文件就會發現session還是會過期,為什么會是這樣的呢?現在還沒搞清楚...于是在網上搜索就有了下面的這種方式 

在 <system.web>下面配置session的保存方式為stateserver就可以了 

<sessionState mode="StateServer" stateNetworkTimeout="20" 
stateConnectionString="tcpip=127.0.0.1:42424" /> 
參數一看就知道是什么意思了..

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品日本亚洲网站 | 黑人干我 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 456在线观看 | 成人免费淫片95视频观看网站 | 微福利92合集 | 国产玖玖在线 | avtt手机版| 国产欧美一区二区三区精品 | ai换脸杨颖啪啪免费网站 | 2021最新国产成人精品视频 | 久久精品国产清白在天天线 | 午夜精品久久久久久 | 好男人天堂网 | 久久亚洲电影www电影网 | 久久re6热在线视频 久久AV喷吹AV高潮欧美 | 国产专区一va亚洲v天堂 | 午夜小视频网站 | zol中关村在线 | 日本午夜vr影院新入口 | 日本特级大片 | 暖暖暖免费观看在线观看 | 精品综合久久久久久88小说 | 亚洲啊v天堂 | 边摸边吃奶边做爽gif动态图 | 色老太bbbbb| 国产精品毛片高清在线完整版 | 人妖欧美一区二区三区四区 | 亚州精品永久观看视频 | 国产做a爰片久久毛片 | 欧美在线观看视频一区 | kayden·kross hd在线| 欧美整片完整片视频在线 | 亚洲国产欧美在线人网站 | 亚洲色图15p | 日本免费的一级绿象 | 女教师系列三上悠亚在线观看 | 欧美一级在线视频 | 久久AV国产麻豆HD真实 | 五月天精品在线 | 午夜办公室在线观看高清电影 |