要应用于非OK响应的属性

时间:2017-08-07 16:09:05

标签: c# asp.net .net asp.net-web-api2 visual-studio-2017

如果我有控制器GET方法,例如:

    [HttpGet]
    [Route("accountrecv({accountid})/promisepay", Name = "GetPromisePay")]
    public HttpResponseMessage GetPromisePay(int accountid)
    {
        var query = Request.RequestUri.Query;
        var uri = new Uri(Client.Instance.BaseAddress.ToString() + accountid + "/promisepay" + query);
        var request = new HttpRequestMessage { RequestUri = uri, Method = HttpMethod.Get };
        var response = Client.Instance.SendAsync(request);
        return response.Result;
    }

如何对HttpStatusCode不正常的所有回复强加行为?

我想我会在方法级别创建一个属性,例如:

[NonOKResponse]
[HttpGet]
[Route.......]
public HttpResponseeMessage GetPromisePay(int accountid)
{
//my code
return response.Result //but force it here to return 404 for EVERY response other than 200
}

如何根据某些条件定义可在所有GET上使用以强制执行特定响应的属性?

2 个答案:

答案 0 :(得分:1)

我相信this article会回答你的问题。您可以使用ExceptionFilterAttribute来处理和管理异常。例如:

public class GeneralExceptionFilterAttribute : ExceptionFilterAttribute 
{
    public override void OnException(HttpActionExecutedContext context)
    {
        context.Response = new HttpResponseMessage(HttpStatusCode.NotFound);
    }
}

答案 1 :(得分:0)