我正在使用 asp.net webapi 并使用 swagger 通过 AutoRest 在 WPF 应用程序中创建 RestApi。如果出现错误,我无法弄清楚如何使用返回的数据。
我的控制器如下;
// 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);
}
}
基于 AutoMapper 的错误,我碰巧在 WebApi 中出现了一个错误,但它被吞没了。它在响应中返回错误消息,这很棒。
这是此调用的当前 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(成功),我该如何获取。
提前致谢。斯科特