C# 要应用于非OK响应的属性
如果我有控制器GET方法,例如:C# 要应用于非OK响应的属性,c#,asp.net,.net,asp.net-web-api2,visual-studio-2017,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
[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;
}
[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
}
在HttpStatusCode
不正常的情况下,如何对所有响应施加行为
我想我会在方法级别创建一个属性,例如:
[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;
}
[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上使用的属性,以根据某些标准强制执行特定响应?我相信回答了您的问题。您可以使用ExceptionFilterAttribute
来处理和管理异常。例如:
public class GeneralExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
context.Response = new HttpResponseMessage(HttpStatusCode.NotFound);
}
}
听起来你需要一个结果过滤器
为什么不在返回结果之前检查
响应的状态代码呢?因为我有数百个控制器,可能还有数千个方法,我需要对它们应用此i行为或ActionFilter在这里实现工作吗?