問題タブ [ierrorhandler]
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.
wcf - IErrorHandlerがバインドされておらず、エラーを処理していません
WCFサービスがあり、IErrorHandlerがバインドされたFaultContractがあり、正常に機能していました。どういうわけか、私にはわかりませんが、実行時にバインドされなくなりました。とにブレークポイントを設定するApplyDispatchBehavior
とValidate
、デバッグの開始時にブレークポイントが呼び出されないため(停止するために使用されます)、エラーが発生したときに例外が処理されません。
最初はこのブログ投稿に従って実装しましたが、正常に機能しましたが、2つ目のインターフェイス/エンドポイントを追加すると、機能しなくなりました。私はこのSO投稿に従ってすべてのコードを変更しましたが、役に立ちませんでした。もう1つ発生し始めたのは、Microsoft Service Configuration Editorでweb.configを開くと、次のエラーが発生することです。
上記のエラーは、2番目のエンドポイント/インターフェイスを追加した後、WCFサービスでエラー処理を失ったときに発生し始めました。以下は私のWeb設定です。
以下は私のエラーハンドラのコードです:
以下は私のインターフェースの1つです。
私は数え切れないほどの時間を無駄にしました、そして私は私のエラー処理を壊した何が起こったのか理解できないようです、それはうまくいきました。Tks SO MUCH for any help
編集
私が得た助けの後に、私は作業コードの下に投稿しています。もう一度Tks...正しいエラーハンドラは次のとおりです。
そして以下は正しいweb.configです
.net - IErrorHandler を使用した REST WCF サービスは、SerializationExceptions をキャッチします
カスタム IErrorHandler を備えた REST WCF サービスを使用しているため、サービスでキャッチされていないすべての例外をキャッチし、カスタム エラー メッセージ、適切な HTTP ステータス コード (500) を返し、エラーをログに記録できます。
問題は、IErrorHandler が自分のコードに由来しない例外をキャッチすることです。たとえば、無効な JSON データを使用してサービスに POST を実行すると、SerializationException が発生します。IErrorHandler がなければ、その例外はステータス コード BadRequest 400 の WebFaultException に変換されていたでしょう。そこで、キャッチされていない他のすべての例外と同じように処理します。
これらの状況に対処する方法はありますか、それとも IErrorHandler で SerializationExceptions をキャッチし、そこに BadRequest を設定する必要がありますか? 私のコードからではなく、WCF スタックから発生する可能性のある他の例外は何ですか?
更新: IErrorHandler.ProvideFault の実装を追加しました
wcf - WCFで他のIErrorHandlerをショートカット/バイパスすることは可能ですか?
私はかなり大きなアプリケーションを開発しており、さまざまな条件に対してIErrorHandlerを複数の方法で実装したいと考えています。ただし、エラーが発生するたびにすべてのインスタンスが呼び出されるようです。リストに残っているハンドラーが呼び出されないように、エラーが特定のインスタンスによって処理されたことをWCFに伝える方法はありますか?
(もう少し詳しく説明すると、「デフォルト」エラーハンドラーを追加するサードパーティのツールキットを使用しています。これは、何をしても、このハンドラーが呼び出され、変更の一部が元に戻されることを意味します。)
wcf - WCF - IErrorHandler と認証
いくつかの認証とカスタム エラー ハンドラーを使用して WCF サービスを作成しています。ただし、この問題に直面しています。私の実装はIErrorHandler
、認証が例外をスローしたときにヒットしませんが、他の例外では問題なく実行されます。
認証IErrorHandler
はビルド前に実行されますか? それらのエラーをキャッチするために間違ったツリーを吠えていますか?
FaultException
はい、認証に ではなく をスローしようとしました (そして現在) SecurityTokenException
。
wcf - IErrorHandlerで元の例外を取得する方法
WCFアプリケーションで役割ベースのセキュリティを使用しています。System.Security.Permissions.PrincipalPermissionAttributeを使用してサービス操作の実装を装飾しました。
承認が失敗すると、System.Security.SecurityExceptionが発生します(これには、アサートされた役割が含まれます)。
System.Security.SecurityExceptionの詳細をログに記録したいと思います。ただし、IErrorHandlerを実装すると、HandleErrorメソッドまたはProvideFaultメソッドに渡された元のSystem.Security.SecurityExceptionが取得されず、代わりにSystem.ServiceModel.FaultExceptionが取得されます。この後者の例外には、ログに記録したい詳細は含まれていません。
IErrorHandler内から元のSystem.Security.SecurityExceptionを取得する方法はありますか、それともWCFのどこかにそれを取得するための別のフックがありますか?
wcf - IErrorHandlerは、残りのJson応答のページが見つかりません
Webプロトコルの例外については、エラーハンドラーが例外を処理し、代わりにjson応答のみを返す必要があります。代わりにページが見つかりません。
サービスの構成は次のとおりです
これがenhancedWebHttpのコードです
ライセンス動作のコードは次のとおりです
ErrorHandlerのコードは次のとおりです。
.net - ログファイルの場所をIErrorHandlerに渡すにはどうすればよいですか?
WCFサービス(2つの別々のプロジェクト)をホストするC#Windowsサービスがあります。私のWCFサービスプロジェクトはIErrorHandler
、エラーをファイルに記録するために使用したいを実装しています。IErrorHandler
私のWindowsサービスはファイルへのログ記録を行っていますが、同じファイルに書き込みたいのですが。
どうすればこれを達成できますか(ファイル名をハードコーディングせずにIErrorHandler
)?
wcf - HTTP 応答で WCF SOAP 逆シリアル化エラーを処理するにはどうすればよいですか?
次のエラー情報を非表示にし、WCF でカスタム メッセージを表示するにはどうすればよいですか? このエラーは、http リクエストに無効なパラメーターを挿入すると発生します
wcf - Why does ProvideFault catch my TimeoutExceptions?
I've got a ProvideFault()
service that communicates through wcf. For most exceptions, we want to catch them, convert them into a FaultException<CustomException>
, and let the caller handler it, so we've implemented ProvideFault()
.
So far, so good, and it mostly works. But this service is calling another service, which sometimes throws a TimeoutExeption
; we don't want to catch that exception, but instead let it bubble up to the caller (or even throw a new TimeoutException
, if necessary). The problem is that when the method throws a TimeoutException
, ProvideFault()
tries to deal with it and turn it into a FaultException.
How do I force wcf to let it bubble up as a TimeoutException
?
wcf - IErrorHandler の Message.CreateMessage は、ラッパー要素/名前空間なしで別のメッセージを作成します
すべての Web サービスからアスペクト指向のコードを削除しようとした結果、奇妙な問題が発生しました。
検証を行い、応答を返す IErrorHandler でキャッチされる FaultException をスローする IParameterInspector があります。
ResponseBase は次のようになります。
これは、Web サービス メソッドによって作成されるすべての応答の基本クラスです。
エラーまたは検証エラーが発生せずにサービス メソッドから返された場合、メッセージには、メソッド名自体の開始タグの直後に、"response" と呼ばれる名前空間を持つボディのラッパー要素が含まれます。
ただし、Message.CreateMessage() メソッドを使用して IErrorHandler で障害を処理しようとすると、FaultException から ResponseBase オブジェクトを渡すと、結果が異なって見えます。
エラー ハンドラから返されたメッセージは、別の方法でシリアル化されているようです。「応答」ラッパー要素が何らかの理由で欠落しています。
これはエラー ハンドラーの実装です (抜粋)。
BodyReader を DataContractSerializer と一緒に使用する、MessageContract 属性を ResponseBase クラスに追加するなど、既に別のことを試しましたが、フレームワークによって暗黙的に生成された応答メッセージのように見せることはできません。
どんな助けでも大歓迎です、どうもありがとう!