Asp.net mvc Web Api配置

Asp.net mvc Web Api配置,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我有个问题 WebApiConfig public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTempl

我有个问题

WebApiConfig

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}",
            defaults: new
            {
                id = RouteParameter.Optional,
                api = "api",
                namespaces = new string[] { "able.application.api" }
            }
        );
    }
}
Global.asax

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    GlobalConfiguration.Configuration.EnsureInitialized();
}
控制器

public class ContentModelController : ApiController
{
    public ContentModelController()
    {

    }

    [HttpPost, HttpGet]
    public HttpResponseMessage Get(int? id)
    {
        return null;
    }
}
问题是:当我调用get方法时,我得到以下错误

Callull:

请帮帮我(


未找到与请求URI名称匹配的HTTP资源http://localhost:54531/api/ContentModel/get?id=1'.
未找到与名为“ContentModel”的控制器匹配的类型。

使用此模板

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "all", id = RouteParameter.Optional }
);
而不是这个

config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}",
        defaults: new
        {
            id = RouteParameter.Optional,
            api = "api",
            namespaces = new string[] { "able.application.api" }
        }
    );
WebApiConfig.cs
文件中。 希望这对您有用。

使用此模板

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "all", id = RouteParameter.Optional }
);
而不是这个

config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}",
        defaults: new
        {
            id = RouteParameter.Optional,
            api = "api",
            namespaces = new string[] { "able.application.api" }
        }
    );
WebApiConfig.cs
文件中。
希望这对您有用。

尝试遵循Saurabh Srivastava的建议,并将您的API调用更新为:
http://localhost:54531/api/ContentModel/get/1

或者,您可以使用原始调用将Get的方法签名更新为:
公共HttpResponseMessage Get([FromUri]int?id)

尝试遵循Saurabh Srivastava的建议,并将API调用更新为:
http://localhost:54531/api/ContentModel/get/1

或者,您可以使用原始调用将Get的方法签名更新为:
public HttpResponseMessage Get([FromUri]int?id)

删除默认值。它们似乎不适用于路由中的任何内容。抱歉..我再次遇到相同的错误。是否使用IIS的本地实例?删除默认值。它们似乎不适用于路由中的任何内容。抱歉..我再次遇到相同的错误。是否使用IIS的本地实例?