0

在 asp.net 2 中,删除文件夹会导致应用程序重新启动。但是今天发现asp.net 4中已经不存在这种行为了?我找不到有关此的任何信息。谁能告诉我这是不是真的?如果是的话,那就太棒了!我讨厌asp.net 2中的这个应用程序重启行为。你可以试试这个:

在 asp.net webforms (.net 3.5) 中调试以下代码,您将捕获 ThreadAbortException。但是当你在 asp.net webforms (.net 4) 中调试它时,你不会捕捉到任何异常;一切都很好。我认为我得到 ThreadAbortException 的原因是我删除了线程中的一个目录。然后应用程序重新启动,然后线程被中止。(环境:Win8、VS2012、IIS Express)

    protected void Page_Load(object sender, EventArgs e)
    {

        var thread = new Thread(() =>
        {
            var folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data\\Test");
            var filePath = Path.Combine(folderPath, "test.txt");

            if (Directory.Exists(folderPath))
            {
                Directory.Delete(folderPath, true);
            }
            Directory.CreateDirectory(folderPath);
            System.IO.File.WriteAllText(filePath, "Hello");

            try
            {
                var loop = 100;

                while (loop > 0)
                {
                    Thread.Sleep(100);
                    loop++;
                }
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
            }
        });
        thread.Start();

        Response.Write("Running");
    }
4

1 回答 1

2

据我所知,3.0 和 4.0 之间没有区别,以下操作将导致应用重新启动:

应用程序重新启动

修改 Web 应用程序的源代码将导致 ASP.NET 将源文件重新编译为程序集。当您修改应用程序中的顶级项时,应用程序中引用顶级程序集的所有其他程序集也会重新编译。

此外,在应用程序的已知文件夹中修改、添加或删除某些类型的文件将导致应用程序重新启动。以下操作将导致应用程序重新启动: •<br> 在应用程序的 Bin 文件夹中添加、修改或删除程序集。

• 从 App_GlobalResources 或 App_LocalResources 文件夹添加、修改或删除本地化资源。

• 添加、修改或删除应用程序的 Global.asax 文件。

• 添加、修改或删除App_Code 目录中的源代码文件。

• 添加、修改或删除配置文件配置。

• 在 App_WebReferences 目录中添加、修改或删除 Web 服务引用。

• 添加、修改或删除应用程序的Web.config 文件。

MSDN 3.0 ASP.NET 应用程序生命周期概述

MSDN 4.0 ASP.NET 应用程序生命周期概述

所以我想这取决于您在应用程序which目录中删除的文件夹。

于 2013-02-08T16:48:09.147 回答