在我的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