내 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
});
}
}
아래의 http get 요청을 사용하여이 함수를 호출하는 angularjs 서비스에 사용됩니다.
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를 catch 할 수 없습니다. 컨트롤러에서 사용자 정의 오류 메시지를 형식화하고 UI에 표시해야합니다. 이 작업을 수행하려면 HttpResponseException이 적절한가요? 어떤 제안이있어 주셔서 감사합니다.
내가하는 statusText하지만이 시도 후
:
난 당신이 더 나은이 같은
API
호출 결과를 표현하는 클래스를 정의 생각 "HTTP 요청 처리 중 예외가 발생했습니다 .HTTP 응답 반환을 참조하십시오. 자세한 내용은이 예외의 '응답'속성에서 확인할 수 있습니다. " 고맙습니다. – Jyina세부 정보에 "내부 서버 오류"가 있습니까? –
@Jyina 맞춤 오류가 사용 설정되어 있습니까? – Shyju