web.api无法测试操作

时间:2015-06-17 12:53:39

标签: c# asp.net-web-api asp.net-mvc-routing

我创建了一个Web.API,MVC应用程序但在尝试测试时遇到了一些麻烦。我收到这个错误:

  

" {"消息":"未找到与请求URI匹配的HTTP资源' http://localhost:60104/api/order/SayWhat/33'。", " MessageDetail":"未找到与命名为' order'。"}"

的控制器匹配的类型

OrderController

[System.Web.Http.HttpGet]
public string SayWhat(string quoteName)
{
    return "Hello World " + quoteName;
}

WebApiConfig

config.Routes.MapHttpRoute(
    name: "DefaultPostApi",
    routeTemplate: "api/{controller}/{action}/{quote}"
);

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

3 个答案:

答案 0 :(得分:3)

在WebApiConfig.cs中使用以下代码

public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

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

        config.Routes.MapHttpRoute(
            name: "ActionApi",
            routeTemplate: "api/{controller}/{action}/{quoteName}",
            defaults: new { quoteName = RouteParameter.Optional }
        );
    }

在控制器中:

[HttpGet]
    [ActionName("SayWhat")]
    public string SayWhat(string quoteName)
    {
        return "Hello World " + quoteName;
    }

答案 1 :(得分:0)

尝试添加属性" ActionName"这个功能。

[System.Web.Http.HttpGet()]
[ActionName("SayWhat")]
public string SayWhat(string quoteName)
{
    return Convert.ToString("Hello World ") + quoteName;
}

答案 2 :(得分:0)

错误消息表明它没有看到订单控制器。

  

“找不到与名为'order'的控制器匹配的类型。”

鉴于您表明您确实拥有resA,那么一种可能性是控制器的类型不正确,因为框架会查找从OrderController继承的类型。

确保控制器的类型正确

ApiController