1

いくつかの手順を実行すると、その後、アプリケーションが自動的に再起動します。それはどのように可能ですか?そのスタッフをデバッグして理解するために何かアドバイスをいただけないでしょうか-そのような奇妙な動作の理由は何ですか。

も例外ではなく、ログは明確です。アプリケーションは、DI に autofac を使用します。ご不明な点がございましたら、お気軽にお問い合わせください。その問題を解決することは私にとって非常に重要です。どうもありがとう。

UPD:この方法による問題。削除すると、すべて正常に動作します。

public void DeleteUserPreviewDir()
{
    string path = GetUserPreviewDir();
    Action<string> del = null;
    del = s => {
                    string[] files = Directory.GetFiles(s);
                    string[] dirs = Directory.GetDirectories(s);

                    foreach (string file in files)
                    {
                        File.SetAttributes(file, FileAttributes.Normal);
                        File.Delete(file);
                    }

                    foreach (string dir in dirs)
                    {
                        del(dir);
                    }

                    Directory.Delete(s, false);
              };
    del(path);
}

ただし、UserPreviewDir は、bin フォルダーではなく、ルート Web フォルダーの下に配置されます。ファイル構造は次のとおりです。 root\tempfiles\folder_which_delete root\bin に置かれた Bin dir

4

3 に答える 3

2

ASP.NET アプリケーションが再起動する原因はいくつかあります。

  • 一定期間非アクティブ状態が続くと、IIS は単純にアプリケーション プールをリサイクルできます (この期間は、アプリケーション プールのプロパティで構成できます)。
  • アプリケーションがメモリまたは CPU 使用率の特定のしきい値に達すると、IIS がそれをリサイクルします (これらのしきい値は IIS で構成可能です)。
  • web.configフォルダーにあるアセンブリまたは一部のアセンブリを更新binしました (アセンブリの追加、既存のアセンブリの更新、アセンブリの削除)。
  • Global.asaxルート フォルダー内のファイルを更新しました。
于 2012-05-02T09:50:34.877 に答える
0

私も同様の問題を抱えていました。再起動の理由を調べるには、次のコードを使用できます (Global.asax.cs に入れてm_logger.Fatal、ログに使用するものに変更するだけです)。

protected void Application_EndRequest()
{
    HttpRuntime runtime = (HttpRuntime)typeof(HttpRuntime).InvokeMember("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField, null, null, null);

    if (runtime == null)
    {
        BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField;
        string shutDownMessage = (string) runtime.GetType().InvokeMember("_shutDownMessage",
            bindingFlags,
            null,
            runtime,
            null);
        string shutDownStack = (string) runtime.GetType().InvokeMember("_shutDownStack",
            bindingFlags,
            null,
            runtime,
            null);

        if (!String.IsNullOrEmpty(shutDownMessage))
            m_logger.Fatal(String.Format("_shutDownMessage={0}\r\n\r\n_shutDownStack={1}", shutDownMessage, shutDownStack));
    }
}
于 2016-04-18T14:48:34.063 に答える
0

このような動作の理由は、サイトのサブフォルダーを削除しているためです。アプリケーションがリサイクルされる理由 - これはまだ不明です。

于 2012-05-06T12:53:12.710 に答える