以下是WCF休息Web服务的一些代码。请注意HttpStatusCode
public string AddProject(ABProject ABProjectObject)
{
if (UserGUID != ABProjectObject.UserGUID)
{
throw new WebFaultException<string>("Wrong User GUID", System.Net.HttpStatusCode.OK);
}
else
{
//carry on
}
}
在使用该服务的客户端中,我有这个:
string serviceResponse;
try
{
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
string statusCode = response.StatusCode.ToString();
StreamReader reader = new StreamReader(response.GetResponseStream());
serviceResponse = reader.ReadToEnd();
}
catch(Exception ex)
{
serviceResponse = ex.Message();
}
在上面的情况中 - 在客户端 - 字符串statusCode包含&#34; OK&#34;字符串serviceResponse包含&#34;错误的用户GUID&#34;。
但是,当然,在我使用状态代码200(确定)传递实际上是错误消息的意义上,这是不正确的。
所以,如果我将休息服务中的这一行改为......
throw new WebFaultException<string>("Wrong User GUID", System.Net.HttpStatusCode.Unauthorized);
...现在,在我的客户中,我一试一次&#39;在Catch块中抛出并捕获异常。现在字符串serviceResponse包含&#34; {&#34;远程服务器返回错误:(401)未经授权。&#34;}
如果我需要返回401或500状态代码 - 我怎样才能返回更有意义的消息?