从wcf rest服务返回状态代码和错误消息

时间:2014-03-26 12:32:22

标签: c# asp.net wcf rest

以下是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状态代码 - 我怎样才能返回更有意义的消息?

0 个答案:

没有答案