国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net刪除文件session丟失

2024-07-10 12:53:55
字體:
來源:轉載
供稿:網友

asp.net登錄成功后,用戶信息將保存到Session中,使用MVC跳轉頁方法,Session丟失,無法獲取數據,下面是錯新技術頻道小編和大家分享的asp.net刪除文件session丟失,希望能幫助到大家。

如果你曾經修改了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" />
參數一看就知道是什么意思了..

上文介紹了關于asp.net刪除文件session丟失的知識,我們在平時也一定要先了解清楚各種知識點,可以在我們使用的時候運用自如。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新泰市| 盘锦市| 娱乐| 东乌珠穆沁旗| 忻州市| 台北县| 涞源县| 巴南区| 北京市| 团风县| 香港| 安多县| 蕲春县| 千阳县| 广河县| 嵊州市| 赤城县| 湖南省| 永定县| 锡林郭勒盟| 正宁县| 陕西省| 漳浦县| 汝阳县| 鄄城县| 石阡县| 绵阳市| 玉树县| 辛集市| 巴彦县| 岳池县| 石首市| 通许县| 稷山县| 东山县| 南安市| 任丘市| 江西省| 晋州市| 荥经县| 天峨县|