在我的WebAPI控制器中,我有一个返回正确结果或HttpResponseException的函数。如何在AngularJS服务中捕获HttpResponseException?
public async Task<SearchResult> Search([FromUri] SearchArguments args)
{
try
{
SearchResult searchResult = await _case.Search(args, true);
string validationError = searchResult.Error;
if (!string.IsNullOrEmpty(validationError))
{
throw new HttpResponseException(new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest)
{
ReasonPhrase = string.Format("Could not find the case. {0}", validationError)
});
}
return searchResult;
}
catch (Exception ex)
{
throw new HttpResponseException(new HttpResponseMessage(System.Net.HttpStatusCode.InternalServerError)
{
ReasonPhrase = ex.Message
});
}
}
它用于angularjs服务,该服务使用http获取请求调用此函数,如下所示。
svc.Search = function (searchArgs) {
var deferred = $q.defer();
var url = 'sci/case/search?';
$http.get(sc.baseURL + url, { params: searchArgs }).
then(function (r) {
if (!r || !r.data) {
console.log('Error: No Data Returned');
deferred.reject('No Data Returned');
}
deferred.resolve(r.data);
}, function (err) {
console.log('Error: ' + err);
deferred.reject(err);
});
return deferred.promise;
}
当有成功的结果时,r.data包含预期结果。但是当从控制器抛出HttpResponseException时,我无法捕获ReasonPhrase。我需要在控制器中格式化自定义错误消息并在UI中显示它们。 HttpResponseException是否适合完成此操作?谢谢你的任何建议。
我试过,但状态文本给我“处理HTTP请求导致异常,请参阅HTTP响应返回详细信息请参阅此例外的“响应”属性。“谢谢。 – Jyina
详细信息是否包含“内部服务器错误”? –
@Jyina您是否启用了自定义错误? – Shyju