問題タブ [request-pipeline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
27 参照

asp.net - カスタム .NET ライブラリへの参照を含む `PreApplicationStartMethod` によって Log4Net がサイレントに失敗するのはなぜですか?

私が見ている実際の問題は、タイトルが示唆するよりも少し複雑かもしれませんが、まだ理解していません。ここに私が持っているものがあります:

環境

私は多くのプロジェクトを持つソリューションを持っていますが、ここでは 3 つの問題のみがあります: ASP.NET WebForms UI プロジェクト (プロジェクト A) と Web サービス プロジェクト (プロジェクト B)。

プロジェクト A は、2 回実装したくない Web サービスの一部を使用しているため、プロジェクト B への参照を持っています。どちらも、ソリューション コードの一部ではないライブラリであるアセンブリ C (同じバージョン) も参照しています。また、すべて同じ log4net ライブラリ バージョンを参照しています。

プロジェクト B には Swagger も含まれているため、次のSwaggerConfig.csファイルが含まれます。

これで、swagger と Web サービスはすべて正常に動作しますが、「LINE OF TROUBLE」が有効になるとすぐに、プロジェクト A (!) の Log4Net がサイレントに失敗します。

AppSettings.TryGetStringValueこの行は、参照された自己作成の .NET アセンブリ "C" に存在するカスタムメソッドを使用し、基本的にAppSettings.Getメソッドが実行することを行いますが、デフォルトを持つ可能性があります。

を使用するとすぐにAppSettings.TryGetStringValue、プロジェクト A へのログインに失敗します。組み込みの を使用するとAppSettings.Get、ロギングが機能します。

質問

問題は参照アセンブリ「C」の読み込みにあると思われますが、正確にはなぜですか?

PreApplicationStartMethodカスタム .NET ライブラリ "C" への参照を持つ別の参照プロジェクト "B" で を使用すると、プロジェクト "A" で Log4Net がサイレントに失敗するのはなぜですか?

ノート

  • string rootUrl = ConfigurationManager.AppSettings.Get("SwaggerRootUrl");LINE OF TROUBLE を参照ライブラリ C のロードに問題があることを示唆するだけに置き換えると、問題はなくなります。