問題タブ [owin-middleware]
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.
c# - OWIN ミドルウェアでの例外処理
未処理の例外をキャッチしてログに記録できるように、いくつかのミドルウェアを追加しようとしていますが、そうするのにいくつかの問題が発生しています。これについて多くを見つけることができず、何らかの奇妙な理由で私のコードが catch ブロックに入っていないようです。これを適切に処理しているようで、辞書を調べても例外が表示されません。
私がやりたいことは、catch ブロックに入って例外を取得し、スタック トレースをログに記録することです。
コード:
asp.net-web-api - OWIN ミドルウェア: 要求に一致するルートがあるかどうかを確認します
現在のリクエストを見て、マップされたルートと一致するかどうかを確認する OWIN ミドルウェアを作成したいと思います (web.api を使用しているため、httpRouteCollection.MapHttpRoute
メソッドにルートを登録します。
現在のリクエストが既知の構成済みルートと一致しない場合、カスタム 404 メッセージで拒否します。
現在のリクエストが定義されたルートのいずれかと一致するかどうかを OWIN コンテキストから判断することはできますか?
asp.net-web-api - OWIN ミドルウェアでのグローバル例外処理
OWIN ミドルウェア (Owin.Host.SystemWeb を使用する IIS HOST) の上に構築された ASP.NET Web API 2.1 プロジェクトで、統一されたエラー処理/レポートを作成しようとしています。現在、NLog から継承して使用するカスタム例外ロガーをSystem.Web.Http.ExceptionHandling.ExceptionLogger
使用して、すべての例外を以下のコードとしてログに記録しました。
System.Web.Http.ExceptionHandling.ExceptionHandler
以下のコードを使用して、すべての API 例外の応答本文を、すべての例外の詳細を非表示にするわかりやすい統一応答に変更したいと考えています。
これにより、例外が発生したときにクライアントに対して以下の応答が返されます。
これで、Api Controller リクエスト パイプライン内で例外が発生した場合でも問題なく動作しています。
しかし、私の状況では、Microsoft.Owin.Security.OAuth
ベアラートークンを生成するためにミドルウェアを使用してValidateClientAuthentication
いNLogExceptionLogger
ますContentNegotiatedExceptionHandler
.それを処理しようとすると、私が使用したサンプルコードAuthorizationServerProvider
は次のとおりです。
したがって、以下の2つの問題を実装する際のガイダンスをいただければ幸いです。
1 - OWIN ミドルウェアによって生成された例外のみを処理するグローバル例外ハンドラーを作成しますか? この回答に従って、例外処理用のミドルウェアを作成し、それを最初のものとして登録しました。「OAuthAuthorizationServerProvider」から発生した例外をログに記録できましたが、これが最適な方法であるかどうかはわかりません。
2 - 前のステップでロギングを実装したとき、「OAuthAuthorizationServerProvider」で発生した例外の標準 JSON モデルをクライアントに返す必要があるため、例外の応答を変更する方法がまったくわかりません。ここに依存しようとした関連する回答がありますが、うまくいきませんでした。
これが私の Startup クラスと、GlobalExceptionMiddleware
例外のキャッチ/ロギング用に作成したカスタムです。欠落している平和は、例外に対して統一された JSON 応答を返すことです。どんなアイデアでも大歓迎です。
log4net - OWIN ミドルウェアまたは委任 MessgaeHandler を使用して、API 要求/応答をログに記録しますか?
古い非 OWIN API では、MessageHanlder を使用してすべての HttpRequests と HttpResponses をログに記録します。MessageHandler は次のとおりです。
ただし、私の新しいプロジェクトでは、カスタム OWIN ミドルウェアを作成して、次のように OwinContext を使用して同様のことを行うことができます。
log4net を使用して情報を SQL2012 データベースに書き込みます。どちらの方法でも私の目標を達成できます。ただし、ある方法を他の方法よりも使用する理由を探しています。カスタム OWIN ミドルウェアまたは MessageHandler を使用する必要がありますか? その理由は? 前もって感謝します。
c# - Web Api 2はOWINミドルウェアでコントローラーとアクション名を取得しますか?
カスタム OWIN ミドルウェア内で API コントローラー名と API アクション名を取得するにはどうすればよいですか? 次のようにメッセージハンドラー内で実行できます。
更新: これが私の現在の OWIN ミドルウェアです。このコード内で controllerName と actionName を取得するにはどうすればよいですか?