我注意到在调试我的应用程序时,有时会在重构(C#Web应用程序)后销毁[InProc]会话状态。事件顺序如下:
我正在使用IIS Express运行此应用程序,但无论使用哪个Web服务器,它似乎都会发生。这导致了许多问题,因为应用程序并没有指望会话变量消失。
namespace BlankWebApp
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["test"] = true;
}
}
protected void butCheckSession_Click(object sender, EventArgs e)
{
if (Session["test"] == null)
{
// Session_End and Application_End must have been called
}
}
}
}
答案 0 :(得分:2)
更改bin
文件夹的内容将导致应用程序池回收。这是Re-Build
发生的情况,因为rebuild将编译应用程序并为项目创建新的dll /可执行文件,从而导致bin
文件夹中的更改。应用程序池回收将导致会话从服务器内存中删除。
同样适用于更改Web.Config
文件也是如此。
你无法避免这种情况。您应该有一个单独的开发和生产环境。