http响应代码是不行的

时间:2014-04-03 15:02:56

标签: c# asp.net web-services rest

我有一个安静的网络服务。如果有人用错误的密钥调用特定方法,我会返回:

OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse;
response.StatusCode = System.Net.HttpStatusCode.Unauthorized;
response.StatusDescription = "Invalid key provided.";

如果我使用运行Firebug的Firefox调用它,请发送无效密钥并在我的调用代码中处理错误,如:

string serviceResponse = "";
try
{
    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
    {
    string statusCode = response.StatusCode.ToString();
    string statusDescription = response.StatusDescription.ToString();
    }
}
catch(Exception ex)
{
    serviceResponse = ex.Message;
}
  • 响应标题显示:

HTTP:1.1 200 OK

处理完错误后,我可以在屏幕上显示一条消息。但是,只要命中'using(HttpWebResponse response = request.GetResponse()as HttpWebResponse)'行,就会抛出错误并且响应对象似乎被丢弃。

如果我没有将HttpWebResponse代码放在try catch块中,浏览器中会显示401未经授权的消息,但Firebug现在显示:

HTTP:1.2 500内部服务器错误

......这很奇怪,因为我送回了401。

在Restful Web服务中,如果遇到401或500 StatusCode,则会在调用Web服务的浏览器中将响应StatusCode和StatusDescription设置为一个错误,抛出错误并响应对象丢弃。

如果返回500或401,您应该如何阅读StatusDescription?

0 个答案:

没有答案