4

当社のアプリケーションの 1 つには、特定のレベルの例外が発生した場合にヘルプデスクに自動的に電子メールを送信するメカニズムがあります。NullReferenceException という特定の例外がいくつかの問題を引き起こしています。これは、IIS のリサイクルとセッションの喪失が原因であると考えられます。これを証明するために、アプリケーションが開始/停止/リサイクルされたときにログを記録し、これを行うためにglobal.asaxファイルにいくつかのコードを追加しました。デバッグ モードで実行すると、ログ メッセージが書き出され、すべて問題ないように見えます。問題は、IIS で構成されたフォルダーにビルドする Web 配置プロジェクトをトリガーするリリース ビルドに切り替えるときに発生します。

アプリケーションに移動すると、ログ ファイルが作成されず、イベント ログが更新されないため、ApplicationStart メソッドが呼び出されません。IIS を再起動すると、ApplicationEnd でも同じことが起こります。つまり、ログが作成されません。

デバッグ ビルドでは機能するのに、リリース ビルドでは機能しないのはなぜですか? 私はこれを何時間も蹴っていますが、それは私を狂わせています。

前もって感謝します

**[編集]: 何が起こっているのか 100% はわかりませんが、現在は機能しているようです。ロギングに使用するアセンブリは、ApplicationStart が実行されるまでに読み込まれないのではないかと考えたので、すべてのコードを削除し、代わりにメソッド内にテキスト ファイルを作成しました。見よ、ファイルが作成された!そのため、if(logger != null) 型チェックを追加して、いくつかの診断を出力しようとしましたが、何も書き出されませんでした。そのため、try/catch を試してみて、例外がスローされてもファイルが作成されない場合は、空白のファイル "exception.txt" を書き込みました。ただし、イベント ログと予想されるログ ファイルは生成されました。よくわかりません!**

4

5 に答える 5

13

この問題があり、PrecompiledApp.configファイルが見つからないことが解決策でした。これがないと、global.asax イベントは IIS6 で ISAPI フィルターを使用して発生しませんでした。msbuild を使用して、展開する前にサイトをプリコンパイルします。

ビルドが機能しなくなったとき、私たちはこれについて数時間頭を悩ませました。強迫観念的なハウスキーピング モードで、このファイルが冗長であると考えて、ソース管理からこのファイルを削除したことが判明しました。再度追加すると、問題が修正されました。

于 2009-05-13T11:07:23.550 に答える
6

アプリを公開する場合は、PrecompiledApp.configファイルを確認してください。そのファイルを公開サイト フォルダーから削除すると、イベントの発生が停止します。

于 2009-05-01T11:20:06.827 に答える
1

null 参照の例外をログに記録しているときに、ログ ロジックが何らかのアクセス許可の問題に遭遇していないことを確認します。ログが書き込まれている場所にアクセスするための適切な権限を持っていますか?

于 2009-05-01T11:18:39.700 に答える
0

私たちは多くのことを試しました。

  1. Global.asax が公開されておらず、Global.asax でイベントが発生していません
  2. ASP .NET Web サイトで Global.asax イベントが発生しないのはなぜですか?
  3. global.asax はローカル コンピューターでは機能しますが、サーバーに公開した後は機能しません
  4. ASP.NET MVC アプリケーションの Global.asax の謎

また、以下のファイルをrootandbinディレクトリに入れてみました。

  1. App_global.asax.dllおよびApp_global.asax.compiledファイル
  2. PrecompiledApp.config

どれもうまくいきませんでした!

asp .net 2.0 Web サイトでグローバル イベントを発生させるために、dllのGlobal.asax代わりにraw を配置する必要がありました。pre-compiled

これが誰かを助けることを願っています! 乾杯!ハッピーコーディング!:D

于 2015-12-17T11:19:24.823 に答える