WCFルーティングを取得して、より詳細なエラーメッセージを提供するにはどうすればよいですか?
-
26-10-2019 - |
質問
WCFルーティングを構成する方法はあります。フィルターが一致しない場合、ルーティングできないメッセージに関する詳細情報を取得できるようにしますか?
現在、AppFabricを使用しており、次のメッセージのみが表示されます。このメッセージは、どのメッセージがフィルターと一致しなかったかを把握しようとする場合、あまり役に立ちません。
No matching MessageFilter was found for the given Message.
解決
これは最良の解決策ではありません。ルーティングサービスが構成どおりに機能していることを確認する方法を実験してきましたが、まだ最良の方法を見つけていません。
しかし、1つの方法は、すべてのフィルターを一致させ、すべてのリクエストを受け入れてログに記録するサービスを提供し、404をクライアントに戻すことです。
<routing>
<filters>
<filter name="Other" filterType="MatchAll" />
<filter name="action1" filterType="Action" filterData="http://tempuri.org/action2" />
<filter name="action2" filterType="Action" filterData="http://tempuri.org/action1" />
</filters>
<filterTables>
<filterTable name="FilterTable">
<add filterName="action1" endpointName="Service1" priority="1" />
<add filterName="action2" endpointName="Service2" priority="1" />
<add filterName="Other" endpointName="Logger" priority="0" />
</filterTable>
</filterTables>
</routing>
ロガーのエンドポイントは、メッセージを受け入れてログに記録する単純なサービスを指し、404を返します
いくつかのpsudoコード:
[ServiceBehavior]
public class RoutingLogger : IYourInterface
{
public System.ServiceModel.Channels.Message YourInterfaceMethod(System.ServiceModel.Channels.Message message)
{
LogMessage(message);
return new Custom404Message();
}
}
所属していません StackOverflow