0

asp.net 2では、フォルダーを削除するとアプリケーションが再起動します。しかし、今日、この動作はasp.net 4には存在しなくなったことがわかりましたか?これに関する情報が見つかりません。これが本当かどうか誰か教えてもらえますか?はいの場合、それは素晴らしいです!asp.net2でのこのアプリケーションの再起動動作は嫌いです。これを試すことができます。

asp.net Webフォーム(.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 に答える