89

要求されたリソースが見つからないなど、WCF REST 呼び出しで問題が発生した場合、OperationContract メソッドで HTTP 応答コード (たとえば、HTTP 404 などに設定) を操作するにはどうすればよいですか?

4

7 に答える 7

118

WebOperationContextアクセスできるがあり、設定可能なプロパティを持つOutgoingResponsetypeのプロパティがあります。OutgoingWebResponseContextStatusCode

WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
于 2008-09-26T15:16:29.730 に答える
77

理由の本文を返す必要がある場合は、WebFaultExceptionを確認してください

例えば

throw new WebFaultException<string>("Bar wasn't Foo'd", HttpStatusCode.BadRequest );
于 2010-11-24T11:44:27.813 に答える
24

404の場合、WebOperationContext.Current.OutgoingResponseにSetStatusAsNotFound(string message)という組み込みのメソッドがあり、1の呼び出しでステータスコードとステータスの説明を404に設定します。

1回の呼び出しでステータスコードを201に設定し、ロケーションヘッダーを設定するSetStatusAsCreated(Uri location)もあることに注意してください。

于 2008-09-26T16:54:10.323 に答える
2

ヘッダーにステータスの説明を表示したい場合は、REST メソッドが次のように Catch() セクションから null を返すようにする必要があります。

catch (ArgumentException ex)
{
    WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
    WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message;
    return null;
}
于 2011-03-18T15:51:31.663 に答える
1
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
throw new WebException("令牌码不正确", new InvalidTokenException());

参照: https://social.msdn.microsoft.com/Forums/en-US/f6671de3-34ce-4b70-9a77-39ecf5d1b9c3/weboperationcontext-http-statuses-and-exceptions?forum=wcf

于 2015-08-17T07:53:52.063 に答える
0

これは、WCF Data Services ではうまくいきませんでした。代わりに、Data Services の場合は DataServiceException を使用できます。次の投稿が役に立ちました。 http://social.msdn.microsoft.com/Forums/en/adodotnetdataservices/thread/f0cbab98-fcd7-4248-af81-5f74b019d8de

于 2011-04-04T16:17:05.630 に答える