Ajax を使用してクライアント側で呼び出す非常に単純な WCF Web サービスがあります。
これが私のWebサービスです:
public string TestService() {
throw new Exception();
return "";
}
クライアント側の Ajax 呼び出しは次のようになります。
var mySuccess = function(result,statuscode,xhr){
alert('success');
}
var myFail = function(result,statuscode,xhr){
alert('failure');
}
$.ajax({
type: 'Post'
contentType: "application/json; charset=utf-8",
url: '../myService.svc/TestService',
data: '',
dataType: "json",
success: mySuccess,
error: myFail
});
この Web サービスは毎回失敗し (そうあるべきです!)、「500: 内部サーバー エラー」のステータスとコードを返します。「myFail」コールバック関数が正常に起動されます。
ただし、Web サービス内の応答ヘッダーを変更すると、次のようになります。
public string TestService() {
WebOperationContext.Current.OutgoingResponse.Headers.Add("token", "1");
throw new Exception();
return "";
}
返されるステータス/コードは、毎回「200: OK」です!
これは、Web サービスが失敗している場合でも、毎回「mySuccess」関数が起動されることを意味します。独自のカスタム ヘッダーを応答に追加するだけで、このようにリターン ステータスが上書きされる理由がわかりません。
足りないものはありますか?