問題タブ [handleerror]
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-mvc - ASP.Net MVC 3 - HandleError 属性の順序が逆に動作しているように見えますか?
問題:属性のOrder
プロパティを使用すると、最も低い順序番号が最初に適用されるのではなく、最も高い順序番号が最初に適用されます。HandleError
詳細
この方法で例外を処理するようにコントローラーを設定したいと思います。
- 例外のタイプが の場合は
CustomException
、"CustomError" ビューを使用します。 - それ以外の場合は、デフォルトの「エラー」ビューを使用してください。
デフォルトの MVC プロジェクト テンプレートを使用して、次のことを行いました。
HandleErrorAttribute
グローバルフィルターから削除しました。- でカスタム エラーをオンにしました
web.config
。
HomeController
次に、これらの属性をクラスに追加します。
そして、これは正常に動作します - aCustomException
がスローされた場合、「CustomError」ビューが表示されます。がスローされた場合Exception
、「エラー」ビューが表示されます。
Order
ただし、属性のプロパティにより、HandleError
物事がより明確になると思いました。MSDN ページから:
整数値が大きいほど、フィルタの優先度は低くなります。
このことから、次のコードにより、すべての状況で「エラー」ビューが表示されると思いました。
しかし、そうではありません。Order
これにより、プロパティが指定されていない場合と同じ動作が発生します。注文を交換するとCustomException
、がスローされた場合でも、「エラー」ビューが表示されます。
基本的に、実際の注文の優先度はドキュメントとは正反対のようです。私は何か間違ったことをしていますか、それともこれはバグですか?
asp.net-mvc-3 - 質問登録 ASP.NET MVC 3 の HandleError 属性
以下のように、global.asax.cs ファイルに HandleError 属性を登録すると、
それでも、すべてのコントローラーで HandlError 属性を指定する必要がありますか?
asp.net-mvc-3 - [HandleError]メカニズムを介してActionFilter例外を処理することは可能ですか?
ASP.NET MVC 3アプリケーションにカスタムアクションフィルター(AuthenticateAttribute)があり、ユーザーが確実にログインできるようになっています。
OnActionExecutingメソッドで例外を発生させたいのですが、それらをHandleErrorグローバルフィルターで処理したいと思います。それは可能ですか?もしそうなら、どうすればいいですか?
現在、OnActionExecutingで例外を発生させると、HandleErrorグローバルフィルターがバイパスされます。これは、アクションiself内で発生する例外のみをトラップするためと考えられます。
asp.net-mvc - マスターページなしで[HandleError]を使用する方法
MVC で [HandleError] を使用して、未処理の例外を「共有」フォルダーの「Error.aspx」ページにリダイレクトしようとしています。既定では、Visual Studio 2010 MVC2 テンプレートは、この関数を使用して単純な MVC アプリケーションを作成します。それは正常に動作します。
ただし、デフォルトで作成される Error.aspx ファイルは「Site.Master」を使用します。しかし、アプリケーションでマスター ページを使用したくありません。デフォルトの「Error.aspx」を削除し、独自のものを追加しました。しかし、それは単に機能しません。マスターページなしで [HandleError] を使用する方法を知っている人はいますか?
ありがとう ...
asp.net-mvc - RegisterGlobalFiltersとHandleErrorAttributeが機能しない
RegisterGlobalFiltersとHandleErrorAttributeに永遠に苦労した後、私は必要最低限に戻ることにしました。テンプレートを使用して、VS10で新しいMVC3プロジェクトを作成しました。About-actionにthrowDivideByZeroExceptionを追加し、開発サーバーを起動しました。黄色の画面が表示されないことが期待されます。
しかし、私はやりました。
なぜこれがうまくいかないのですか?
アップデート
archilとAdamTuliperの提案はうまくいきました。エラービューが呼び出されました。
次に、これをRegisterGlobalFiltersに追加します。
AllOtherExceptionsビューが呼び出されました。なぜDivideByZeroExceptionビューではないのですか?
フォローアップの質問はここに投稿されています。
wcf - Log4Net & WCF IErrorHandler - ServiceSecurityContext.Current.WindowsIdentity.Name returns NullReferenceException
I am using a WCF Service and I have implemented IErrorHandler. In the HandleError method, I want to retrieve the caller's username in order to set a ThreadContext property for Log4Net (to save the username along with the exception details in SQL Server)
My code is working well if I avoid trying to retrieve the caller's username.
This is the line of code inside the HandleError method which is returning a NullReferenceException:
It seems that at the point the HandleError method of IErrorHandler kicks in, the original caller information has been disposed.
Does anyone have any idea how I can retrieve the caller's username inside the HandlerError method of IErrorHandler?
Thanks for your help!
asp.net-mvc - ユーザーがデータ型 string のクエリ文字列 PM の名前を間違って入力したときにスローされる例外を取得するにはどうすればよいですか?
私は MVC 3 と vs2010 と VB.NET を使用しています。私はコントローラーで「HandleError」を使用しています。これはうまく簡単に機能し、未処理の例外を自動的に検出し、ユーザーを選択したエラーページにリダイレクトします。ただし、問題があります。
私が使用しているアクションメソッドの例を次に示します。
ユーザーが次の方法で URL を操作すると、例外が自動的にスローされ、ユーザーはエラー ページにリダイレクトされます。
- .../?DespatchNoteNo=DN1234&DespatchNoteItemId=A (DespatchNoteItemId のデータ型が正しくありません)
- .../?DespatchNoteNo=DN1234&DespatchNoteItem=1 (DespatchNoteItemId のパラメータ名が正しくありません)
例外が自動的にスローされたようです (間違っている場合は修正してください)。これは HandleError によって検出され、ユーザーはエラー ページにリダイレクトされます。
ただし、ユーザーが次のように入力した場合:
- .../?DespatchNote=DN1234&DespatchNoteItemId=1 (DespatchNote のパラメーター名が正しくありません)
スローされた例外はないようです (間違っている場合は修正してください)。ユーザーはエラー ページにリダイレクトされませんが、代わりにコードが続行されます。
デバッグ中に確認できる限り、アクション メソッドが呼び出されると、上記のすべてのシナリオでパラメーターの値が Nothing に設定されます。繰り返しになりますが、違いは、String 以外のタイプのパラメーターの場合、例外がスローされ、タイプ String の APART FROM パラメーターがスローされないことです。
私は明らかに、後でアプリケーションのサービス層で変数の内容を再度チェックしていますが、上記のシナリオ (つまり、ユーザーがクエリ文字列を操作していて、指を切り落とす必要があります) では、コードを使用してサービス層に入る代わりに、ユーザーをエラー ページにリダイレクトします (文字列以外のデータ型で起こっていることと同じです)。
ユーザーが文字列型のクエリ文字列パラメーターの名前を操作した場合に例外をスローする方法を知っている人はいますか? それとも、これを間違った方法で回避していますか?
asp.net-mvc-3 - Elmah は、コントローラー アクションの各 HandleError 属性に対して 1 回、同じ例外をログに記録します。
ELMAH を使用して MVC3 プロジェクトのエラーをログに記録し、予想される例外にこのHandleError 属性を使用しています。
アクションに複数の HandleError 属性がある場合に問題が発生します。Elmah は、アクションのすべての HandleError 属性に加えて 1 つの同じ例外を電子メールで送信し、ログに記録します。
私がリンクした回答は、これを副作用の可能性として言及していますが、問題を解決する方法について途方に暮れています。
多くの例外が予想され、ユーザーはさまざまな理由を確認する必要があり、それらのいずれかが頻繁に発生する可能性があるため、私の最大の懸念は以下に詳述するアクションです。
asp.net-mvc - MVC HandleError フィルターは例外をキャッチしませんでした
例外処理に「 HandleError」アクション フィルターを使用している MVC 3 Web アプリがあります。このアクション フィルターを次のように実装しました。
これは、すべてのコントローラーの派生元となる基本クラスです。私のweb.configではそして、共有フォルダーにError.cshtmlがあります (Razor を使用しているため、.cshtml)。すべてが正常に機能しており、適切な例外処理が得られます (関数によってフォーマットされています)
最近、どういうわけか「未処理の例外 (YSOD)」が発生し、「customErrors」が原因で、実際の例外に関する情報がないデフォルトの ASP.Net エラー メッセージが表示されました。これは、AJAX ポストバックで発生しました。しかし、私はそれを再現することができません。
このアクション フィルターを回避するエラーはありますか?
c# - アプリケーション固有の例外から Http 例外に直接マップするにはどうすればよいですか?
ASP.NET MVC 3 アプリケーションに取り組んでいます。アプリのいわゆる「ビジネス層」では、状況に応じて特定の種類の例外を常にスローすることを決定しました。ユーザーが許可されていないことをしようとした場合の例外タイプの階層と、アプリケーションが特定のアイテムを (ID または名前などで) 見つけられない場合の特別な例外があります。
これは、C# コードでは次のようになります。
...SomethingNotFoundException
とNotAuthorizedException
は customException
です。
この種の例外と Http ステータス コード (404 Not Found / 403 Forbidden) の間に何らかの直接マッピングがあり、それに応じて Controller メソッドでこれらのエラーを処理する必要があります (404/403 CustomError ページなどを表示します)。 . 今、私たちが望むのは、コントローラーのアクションでこれを行う必要がないようにすることです:
カスタムのHandleErrorAttributeまたはカスタムのActionFilterAttributeを使用してGlobal.asaxに登録する方法が必要だと確信していますが、それを機能させる方法がわかりません。
試行 1 : HandleErrorAttribute
最初に、HandleErrorAttribute のサブクラスを作成して、OnException
メソッドをオーバーライドしようとしました。
GlobalFilterCollection
...それをGlobal.asaxに追加します ...しかし、404/403 カスタム エラー ページを表示する代わりに、通常の 500 エラーのように処理されます...
試行 2: ActionFilterAttribute
ActionFilterAttribute
また、それを にして、次のようにメソッドをオーバーライドしようとしましたOnActionExecuted
:
...それでも、404 または 403 の代わりに 500 エラー ページが表示されます ...
私は何か間違っていますか?おそらくより良い方法はありますか?