問題タブ [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.
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 のロードに問題があることを示唆するだけに置き換えると、問題はなくなります。