【问题标题】:Handling bad request in asp.net web api处理 asp.net web api 中的错误请求
【发布时间】:2013-07-29 06:04:52
【问题描述】:

我的 mvc4 应用程序中有一个如下所示的 api url

http://localhost:15839/api/mydata/getdata/3365895543/PROBLEMDATA/myotherparam

现在客户端正在使用上面的 url 发送httprequest。作为回应api 正在发回response。但在PROBLEMDATA 的url 用户发送的错误字符给了我Bad Request - Invalid URL。我不能强制我的客户端源对数据进行编码。我需要在我的 web api 中处理它并给我的客户一个字符串"Unsucessful"。我看到this webapi 循环想知道我应该在什么时候处理这​​个问题。可能在 http 消息处理程序中,但如何?

我可能需要关注this。但Register(HttpConfiguration config) 也没有被击中

【问题讨论】:

  • 您希望请求到达预期 api 控制器还是更好地处理错误?
  • 如果请求可以到达控制器,那就太好了,否则我想将 json 响应“unscussful”发送回客户端
  • 您提供的最后一个链接 (DelegatingHandler) 似乎没有任何帮助,因为 400 错误请求在之前得到验证。在 web api 中做你想做的事情可能是不可能的——最好在专门的 web api 论坛上问这个问题:forums.asp.net/1246.aspx/1?ASP+NET+Web+API

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api


【解决方案1】:

我相信您可以通过覆盖application_error 方法来全局捕获这一点。从那里我想你可以产生“不成功”的响应或传递请求以在控制器级别处理。

Take a look at this question as well.

【讨论】:

  • 您将如何“传递请求以在控制器级别进行处理”?
  • @wal 通过使用 Response.Redirect 或将适当的控制器声明为 IController 并使用 execute 方法。通过对 RawUrl 进行一些正则表达式分支,您可以猜测您需要将响应发送到哪里,或者将请求发送到错误控制器作为失策。
  • 这并不理想,因为您现在需要对 api 路由进行准实现才能到达正确的控制器
  • According to this 看起来该请求根本不可能到达应用程序级别。
  • 请求未到达控制器。我想我应该关注asp.net/web-api/overview/working-with-http/… 这个但它也不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
相关资源
最近更新 更多