我有一个安静的网络服务。如果有人用错误的密钥调用特定方法,我会返回:
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?