Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 抛出HttpResponseException的web api以及如何在wpf客户端上接收_.net_Wpf_Asp.net Web Api - Fatal编程技术网

.net 抛出HttpResponseException的web api以及如何在wpf客户端上接收

.net 抛出HttpResponseException的web api以及如何在wpf客户端上接收,.net,wpf,asp.net-web-api,.net,Wpf,Asp.net Web Api,从我的wpf客户端,我向web api发送异步请求,在这个场景中,web api应该返回HttpResponseException,所以我尝试了 HttpResponseMessage response = new HttpResponseMessage(); response = client.GetAsync(url).Result; if (response.IsSuccessStatusCode) { ... } else { MessageBox.Show("Not ac

从我的wpf客户端,我向web api发送异步请求,在这个场景中,web api应该返回HttpResponseException,所以我尝试了

HttpResponseMessage response = new HttpResponseMessage();
response = client.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
   ...
} else {
    MessageBox.Show("Not active" + response.StatusCode + " : Message - " + response.ReasonPhrase);
}
WebApi端

private void GetData()
{
   try {
      data = RavenSession.Query<myobj>().Take(1024).ToList();
   } catch (WebException) {
         throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.ServiceUnavailable, "Database is not online!"));
   }
}

但接球挡根本没有被击中。我只能访问
响应。IsSuccessStatusCode
,但这样我无法从webservice向客户端返回详细的消息异常(我想显示详细消息)。

从客户端读取错误消息

并根据需要格式化字符串

参考:(在文章中搜索“反序列化响应内容”)

try{
    HttpResponseMessage response = new HttpResponseMessage();
    response = client.GetAsync(url).Result;
    if (response.IsSuccessStatusCode)
    {
       ...
    } else {
        MessageBox.Show("Not active" + response.StatusCode + " : Message - " + response.ReasonPhrase);
    }
}
catch(HttpResponseException e){
     MessageBox.Show(e.Message);
}
catch(Exception e){
     MessageBox.Show(e.Message);
}
if (response.IsSuccessStatusCode)
{
   ...
} else {
    var errorMessage = response.Content.ReadAsStringAsync().Result; 
}