我正在使用ServiceStack在自己的Web API中调用外部Web API。 对于取消订阅的用户,外部Web API会引发预期的“ 404 Not found”(404未找到)异常,并且自定义消息为“没有使用uuid的订阅者:{... uuid已发送}” 。我可以在邮递员那里看到它
但是当我在ServiceStack处理程序中调用它时,在catch语句的异常详细信息中没有得到自定义异常。 以下是我的代码的一部分
public class MyString {
private char[] arr;
public MyString(int length) {
arr = new char[length];
}
异常详细信息:
try{
//Create Request
var statusUri =new Uri(urlOfExternalWebAPI, UriKind.Absolute);
var serviceRequest = (HttpWebRequest) WebRequest.Create(statusUri);
serviceRequest.Method = "GET";
serviceRequest.Headers.Add("Authorization",OauthToken.TokenType + " " + OauthToken.AccessToken);
serviceRequest.Accept = "application/json";
//Get the response.
using (var response = serviceRequest.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
if (responseStream != null)
{
using (var reader = new StreamReader(responseStream))
{
var responseFromServer = reader.ReadToEnd();
}
}
}
}
}
catch (WebServiceException e) //
{
//Exception is not getting caught here
throw;
}
catch (Exception ex)
{
// exception is caught here but could not get the custom error message
throw;
}
但是在例外的任何字段中,我都没有收到我在邮递员中收到的自定义消息。
我需要确切的自定义消息来区分404(由于无效的URL)和404(由于无效的订户)。请帮忙。
谢谢。
答案 0 :(得分:1)
看起来您需要抓住 WebException 相对于 WebServiceException
除非有明确的要求,否则我也不认为您应该为无效的订户返回404!
答案 1 :(得分:1)
由于您没有使用ServiceStack's Generic C# Clients,因此HTTP请求不会抛出WebServiceException
。
您而是直接使用.NET的HttpWebRequest
,因此只抛出WebException
,但是ServiceStack确实包含HTTP Utils,它提供了用于访问.NET的{ {1}},例如:
HttpWebRequest