我有一个WebAPI2 mvc应用程序,我正在做Get / Post到另一个api。我的代码如下所示
public Task<SomeEntity> AddAsync(SomeEntity someEntity)
{
try
{
var response = apiService.PostItem(url, someEntity);
if (response == null || response!="Successful")
{
throw new InvalidOperationException(response);
}
}
catch (Exception ex)
{
_logger.Error("Error " + ex.Message);
// how to return this error or exception;
}
return Task.FromResult(someEntity);
}
如果对内部api的调用返回异常字符串,那么我需要从此方法调用转发它。任何想法我该怎么办?感谢
答案 0 :(得分:0)
您可以使用IHttpActionResult或HttpResponseMessage作为返回类型并返回正确的HTTP状态代码。如果发生异常,您可以返回[如果您返回IHttpActionResult]
public IHttpActionResult Error()
{
var error = new HttpError();
return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, error));
}
或者在您的示例中,使用适当的状态代码抛出HttpResponseException。
public Product GetProduct(int id)
{
Product item = repository.Get(id);
if (item == null)
{
var message = string.Format("Product with id = {0} not found", id);
throw new HttpResponseException(
Request.CreateErrorResponse(HttpStatusCode.NotFound, message));
}
else
{
return item;
}
}