WCF Silverlightサービスはカスタムフォールトを返しますが、HTTP 500レスポンスは200ではありません

http-status-codes silverlight wcf
WCF Silverlightサービスはカスタムフォールトを返しますが、HTTP 500レスポンスは200ではありません

私はSilverlight WCFサービスのカスタムフォールトで永遠に頭を打ち続けているようですので、これを解決できる人のために喜んで*ビールを購入するために最善を尽くします!!!

苦労した後、WCFサービスでカスタムエラー( ParameterValidationFault)がスローされ、Fiddlerを使用すると、サービスの応答にシリアル化された障害オブジェクトが含まれることがわかりますが、HTTP応答コードは200ではなく500なので、クライアントはむしろ例外をスローし始めます応答を読むよりも。

`SilverlightFaultBehavior`クラスが応答ステータスコードの変更を処理することになっていることは知っていますが、そこに設定したブレークポイントがヒットすることはないので、これが単純なweb.configの問題(役職)。

これに関連する場合、web.configのセクションに「要素 ‘behavior’に無効な子要素 ‘silverlightFaults’ …​」が表示されます

しかし、サービスのメタデータをエラーなしで表示できるため、これは問題ではないと考えました。 しかし、今、これは私のステータスコードが途中で変更されるのを防ぐミッシングリンクだと思っています。 このエラーは、 `behaviorExtension`要素内のtype属性が.NETが想定しているものと正確に一致しないという問題を示していることを読みましたが、これを何百回も確認し、名前空間とアセンブリ名は間違いなく正しいです。 私はバージョン、文化、公開キーなどをいじっていません。

このタイプの文字列(スペース、コンマ、およびすべて)を正確に伝えるための.NETの簡単な方法はありますか? エクスプローラーでdllのプロパティを表示しましたが、まだ近づいていません。

これがどこから来たのかについてのその他の提案は大歓迎です。

私のSilverlightFaultBehaviorクラスはこのように始まり、名前空間を変更したhttp://msdn.microsoft.com/en-us/library/dd470096%28VS.96%29.aspx [このMSDN投稿]のコピー&ペーストです

namespace my.namespace
{
    public class SilverlightFaultBehavior : BehaviorExtensionElement, IEndpointBehavior
    {
        public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
        {

  4  1


ベストアンサー

この問題は解決されていませんが、回避されています。 私は最終的にhttps://stackoverflow.com/questions/4015376/wcf-endpointbehaviors-extension-not-picked-up-when-the-name-param-is-present [この非常に便利な投稿]で匿名にすることができることを見ました「endpointBehavior」。 これで動作が適用され、カスタムフォールトが(非標準的な方法で)HTTP 200として正しく返されます。 動作を匿名にすることは、すべてのエンドポイントに適用されることを意味しますが、現在のサービスでは単一のエンドポイントのみが必要であるため、これでうまくいきます。

Frigginマニュアルを読み、それを一語一語実装した後、私がこのような悲しみをすべて感じたことは本当に残念です。 最後に私の構成解析エラー「要素「動作」には無効な子要素「silverlightFaults」があります…​」は関係ありませんでしたが、途中で非常に臭いのある赤いニシンが原因であった可能性があります)。

誰かが疑問に思っている場合のために、私はビールを飲みました。

0


タイトルとURLをコピーしました