問題タブ [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.

0 投票する
1 に答える
1931 参照

wcf - IErrorHandlerがバインドされておらず、エラーを処理していません

WCFサービスがあり、IErrorHandlerがバインドされたFaultContractがあり、正常に機能していました。どういうわけか、私にはわかりませんが、実行時にバインドされなくなりました。とにブレークポイントを設定するApplyDispatchBehaviorValidate、デバッグの開始時にブレークポイントが呼び出されないため(停止するために使用されます)、エラーが発生したときに例外が処理されません。
最初はこのブログ投稿に従って実装しましたが、正常に機能しましたが、2つ目のインターフェイス/エンドポイントを追加すると、機能しなくなりました。私はこのSO投稿に従ってすべてのコードを変更しましたが、役に立ちませんでした。もう1つ発生し始めたのは、Microsoft Service Configuration Editorでweb.configを開くと、次のエラーが発生することです。

上記のエラーは、2番目のエンドポイント/インターフェイスを追加した後、WCFサービスでエラー処理を失ったときに発生し始めました。以下は私のWeb設定です。

以下は私のエラーハンドラのコードです:

以下は私のインターフェースの1つです。

私は数え切れないほどの時間を無駄にしました、そして私は私のエラー処理を壊した何が起こったのか理解できないようです、それはうまくいきました。Tks SO MUCH for any help

編集

私が得た助けの後に、私は作業コードの下に投稿しています。もう一度Tks...正しいエラーハンドラは次のとおりです。

そして以下は正しいweb.configです

0 投票する
2 に答える
2213 参照

.net - IErrorHandler を使用した REST WCF サービスは、SerializationExceptions をキャッチします

カスタム IErrorHandler を備えた REST WCF サービスを使用しているため、サービスでキャッチされていないすべての例外をキャッチし、カスタム エラー メッセージ、適切な HTTP ステータス コード (500) を返し、エラーをログに記録できます。

問題は、IErrorHandler が自分のコードに由来しない例外をキャッチすることです。たとえば、無効な JSON データを使用してサービスに POST を実行すると、SerializationException が発生します。IErrorHandler がなければ、その例外はステータス コード BadRequest 400 の WebFaultException に変換されていたでしょう。そこで、キャッチされていない他のすべての例外と同じように処理します。

これらの状況に対処する方法はありますか、それとも IErrorHandler で SerializationExceptions をキャッチし、そこに BadRequest を設定する必要がありますか? 私のコードからではなく、WCF スタックから発生する可能性のある他の例外は何ですか?

更新: IErrorHandler.ProvideFault の実装を追加しました

0 投票する
1 に答える
126 参照

wcf - WCFで他のIErrorHandlerをショートカット/バイパスすることは可能ですか?

私はかなり大きなアプリケーションを開発しており、さまざまな条件に対してIErrorHandlerを複数の方法で実装したいと考えています。ただし、エラーが発生するたびにすべてのインスタンスが呼び出されるようです。リストに残っているハンドラーが呼び出されないように、エラーが特定のインスタンスによって処理されたことをWCFに伝える方法はありますか?

(もう少し詳しく説明すると、「デフォルト」エラーハンドラーを追加するサードパーティのツールキットを使用しています。これは、何をしても、このハンドラーが呼び出され、変更の一部が元に戻されることを意味します。)

0 投票する
1 に答える
467 参照

wcf - WCF - IErrorHandler と認証

いくつかの認証とカスタム エラー ハンドラーを使用して WCF サービスを作成しています。ただし、この問題に直面しています。私の実装はIErrorHandler、認証が例外をスローしたときにヒットしませんが、他の例外では問題なく実行されます。

認証IErrorHandlerはビルド前に実行されますか? それらのエラーをキャッチするために間違ったツリーを吠えていますか?

FaultExceptionはい、認証に ではなく をスローしようとしました (そして現在) SecurityTokenException

0 投票する
1 に答える
431 参照

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のどこかにそれを取得するための別のフックがありますか?

0 投票する
1 に答える
743 参照

wcf - IErrorHandlerは、残りのJson応答のページが見つかりません

Webプロトコルの例外については、エラーハンドラーが例外を処理し、代わりにjson応答のみを返す必要があります。代わりにページが見つかりません。

サービスの構成は次のとおりです

これがenhancedWebHttpのコードです

ライセンス動作のコードは次のとおりです

ErrorHandlerのコードは次のとおりです。

0 投票する
1 に答える
100 参照

.net - ログファイルの場所をIErrorHandlerに渡すにはどうすればよいですか?

WCFサービス(2つの別々のプロジェクト)をホストするC#Windowsサービスがあります。私のWCFサービスプロジェクトはIErrorHandler、エラーをファイルに記録するために使用したいを実装しています。IErrorHandler私のWindowsサービスはファイルへのログ記録を行っていますが、同じファイルに書き込みたいのですが。

どうすればこれを達成できますか(ファイル名をハードコーディングせずにIErrorHandler)?

0 投票する
1 に答える
3018 参照

wcf - HTTP 応答で WCF SOAP 逆シリアル化エラーを処理するにはどうすればよいですか?

次のエラー情報を非表示にし、WCF でカスタム メッセージを表示するにはどうすればよいですか? このエラーは、http リクエストに無効なパラメーターを挿入すると発生します

0 投票する
1 に答える
233 参照

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?

0 投票する
1 に答える
503 参照

wcf - IErrorHandler の Message.CreateMessage は、ラッパー要素/名前空間なしで別のメッセージを作成します

すべての Web サービスからアスペクト指向のコードを削除しようとした結果、奇妙な問題が発生しました。

検証を行い、応答を返す IErrorHandler でキャッチされる FaultException をスローする IParameterInspector があります。

ResponseBase は次のようになります。

これは、Web サービス メソッドによって作成されるすべての応答の基本クラスです。

エラーまたは検証エラーが発生せずにサービス メソッドから返された場合、メッセージには、メソッド名自体の開始タグの直後に、"response" と呼ばれる名前空間を持つボディのラッパー要素が含まれます。

ただし、Message.CreateMessage() メソッドを使用して IErrorHandler で障害を処理しようとすると、FaultException から ResponseBase オブジェクトを渡すと、結果が異なって見えます。

エラー ハンドラから返されたメッセージは、別の方法でシリアル化されているようです。「応答」ラッパー要素が何らかの理由で欠落しています。

これはエラー ハンドラーの実装です (抜粋)。

BodyReader を DataContractSerializer と一緒に使用する、MessageContract 属性を ResponseBase クラスに追加するなど、既に別のことを試しましたが、フレームワークによって暗黙的に生成された応答メッセージのように見せることはできません。

どんな助けでも大歓迎です、どうもありがとう!