3

我有一个非常简单的 WCF Web 服务,我使用 Ajax 在客户端调用它:

这是我的网络服务:

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'!

这意味着每次都会触发“mySuccess”函数,即使 Web 服务应该失败也是如此。我不明白为什么简单地将我自己的自定义标头添加到响应中会以这种方式覆盖返回状态。

有什么我想念的吗?

4

1 回答 1

0

一个选项是抛出WebFaultException一个有意义的 HTTP 状态和消息。示例: throw new WebFaultException("Invalid request received.", HttpStatusCode.BadRequest);
BadReuqest 代码为 400。

于 2013-07-23T09:11:40.280 回答