【问题标题】:Exception while passing JSON string(multiple parameters) to method in WebAPI service将 JSON 字符串(多个参数)传递给 WebAPI 服务中的方法时出现异常
【发布时间】:2013-05-29 07:26:14
【问题描述】:

在尝试将 JSON 数据从脚本端传递到 WebAPI 服务内部的方法时,我们遇到了以下异常。

{
  "Message":"No HTTP resource was found that matches the request URI '.../api/Values/Sample'.",
  "MessageDetail":"No type was found that matches the controller named 'Values'."
}

重要提示:

在 .net 4.0 和 VS2010 中使用 WebAPI 时,我们没有遇到任何此类问题,但是当我们在 .net 4.5 和 VS2012 中使用 WebAPI 时,我们看到了这个问题。因此,请使用 4.5 框架对此进行诊断。 我们在以下链接中附加了示例。如果您可以使用 cmets 查看并发布正确的示例,那将非常有帮助,因为我们是 WebAPI 概念的新手。带有适当 cmets 的事件发布代码 sn-p 就可以了。

示例链接:http://www.fileconvoy.com/dfl.php?id=gb197faeca5017d489993001280c7f122f64fc06a7

提前致谢。

【问题讨论】:

    标签: asp.net-web-api asp.net-web-api-routing


    【解决方案1】:

    我查看了您的样本。修复它的几件事:

    1.将控制器名称从ValuesController1更改为ValuesController。默认情况下,Web API 会查找带有后缀“Controller”的控制器类。

    2.将您的路线更改为以下内容:

    System.Web.Routing.RouteTable.Routes.MapHttpRoute(
               name: "DefaultApi",
               routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional});
    

    【讨论】:

    • 喜基兰,感谢您的建议。我在两个文件中都进行了更改,并且在运行项目时,脚本调用了不相关的方法(调用 Post() 方法而不是 Sample() 方法)。您能否建议调用特定方法(示例)的方式?再次感谢。
    • 您的“Sample”操作方法看起来像“Sample(string Position, string Others, string Info)”...所以您的 POST 请求 url 应该看起来像 /api/Values?position=something&others=something&info=something...这里的想法是您的控制器中有 2 个 post 方法,并且您正在使用查询字符串参数重载(如 C# 方法重载)这些操作...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多