0
我正在使用asp.net webapi並使用Swagger通過AutoRest在WPF應用程序中創建RestApi。 我有問題搞清楚如何使用返回的數據,如果有錯誤。WebApi和Swagger
我的控制器如下;
// POST: api/Personnel
//[SwaggerResponse(HttpStatusCode.InternalServerError ,Type = typeof(HttpError))]
[SwaggerOperation("AddEditContract")]
[SwaggerResponse(HttpStatusCode.OK, Description = "Add/Edit a Contract", Type =typeof(int))]
public IHttpActionResult Post(ContractDto value)
{
try
{
var _contractsService = new Business.ContractsService();
var contractToSave = _contractsService.GetContractsById(value.CC_Id);
if (contractToSave == null)
{
return NotFound();
}
var ret = _contractsService.SaveContract(value);
if (ret > 0)
{
return Ok(ret);
}
else
{
return BadRequest();
}
}
catch (Exception ex)
{
return InternalServerError(ex);
}
}
我碰巧在WebApi中出現了一個錯誤,它基於AutoMapper的一個錯誤,但它被吞沒了。它在響應中返回一條錯誤消息,這很好。
這是此次調用的當前AutoRest代碼。
public static int? AddEditContract(this IBuxtedConAPI operations, ContractDto value)
{
return Task.Factory.StartNew(s => ((IBuxtedConAPI)s).AddEditContractAsync(value), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult();
}
正如你可以看到它期待一個int。如果我取消註釋
//[SwaggerResponse(HttpStatusCode.InternalServerError ,Type = typeof(HttpError))]
int返回類型轉爲對象。
所以真正的問題。 這裏是WPF我的服務調用的WebAPI
public async Task<int> SaveContract(ContractDto entity)
{
using (var db = new BuxtedConAPI())
{
var ret = await db.AddEditContractAsync(entity);
return (int)ret;
}
}
如果一個對象返回我怎麼收拾如果發生錯誤,或者簡單的int(在成功)剛剛返回。
在此先感謝。 Scott
感謝您回覆我。 – scottsanpedro
嗨加勒特。你建議作爲最終答案嗎?如果是這樣,我會接受。我只是想確保我沒有錯過任何對asp相當陌生的東西。謝謝Scott – scottsanpedro
是的,你幾乎只需要使用'default'作爲你的錯誤響應,而AutoRest就會爲這些產生異常。 –