私の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
});
}
}
anglejsサービスでは、以下のようにhttp get要求を使用してこの関数を呼び出します。
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レスポンスのretur詳細についてはこの例外の「レスポンス」プロパティを参照してください。ありがとうございました。 – Jyina
詳細に「内部サーバーエラー」が含まれていますか? –
@ Jyinaカスタムエラーが有効になっていますか? – Shyju