3

それで、カスタム属性で装飾したいくつかのサービスにいくつかのメソッドがあります。

この属性はApplyDispatchBehaviorfromIOperationBehaviorを使用してメソッドにアタッチし、 fromBeforeCallおよびAfterCallメソッドを使用IParameterInspectorして、サービス メソッドが呼び出される前後に何らかの処理を行います。

問題は、サービス メソッドがメッセージと共に http ステータスを返す必要がある場合です。私が見つけた唯一の方法は、メソッドがWebFaultException<T>メッセージと適切な http ステータスを渡すことでした。

これに関する問題は、添付された属性AfterCallが呼び出されないことです。

それの長短は次のとおりです。

  • 例外をスローせずにメッセージを返し、http ステータスを設定する方法はありますか?
  • スローする必要がある場合WebFaultException<T>、返されたメッセージで属性を呼び出す方法はありますか?
4

1 に答える 1

6

わかりました多くの検索の後、私はこの質問この回答を見つけました

要約すると、次のような小さなメソッドへの呼び出し:

public void SetResponseHttpStatus(HttpStatusCode statusCode)
{
    var context = WebOperationContext.Current;
    context.OutgoingResponse.StatusCode = statusCode;
}

...単純な 200 応答ではない各リターンの前にそれを行う必要があります。

于 2010-10-15T08:26:56.203 に答える