在C#Web API中重定向HTTP响应的正确方法是什么?

时间:2018-08-08 08:21:34

标签: c# asp.net redirect routes response

以下是我们网站的示例回复。

HTTP响应代码为404(未找到)

  

{       “ Message”:“未找到与请求URI'http://localhost:2425/Prefix/Controller?parameter=param1'相匹配的HTTP资源。”,       “ MessageDetail”:“在与请求匹配的控制器'Controller'上未找到任何动作。” }

我们应该能够将HTTP响应修改为403(错误请求),因为用户返回的参数不完整(还有另一个参数,例如parameter2),并且我们还应该将消息详细信息修改为可定制的内容

这可以实现吗?

下面是WebApiConfig.cs中的示例方法

var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

我尝试删除config.MapHttpAttributeRoutes(),但是如果参数不匹配,则应用程序不会进入控制器,因此我可以返回响应。

1 个答案:

答案 0 :(得分:0)

您可以创建中间件类,在该中间件类中,您可以在控制器获取之前和执行控制器之后检查和修改HTTP请求数据(参数,标头,路由,返回状态代码结尾等)。 这是a good example的中间件