MVC 4路由找不到控制器

atl*_*per 2 c# asp.net-mvc asp.net-mvc-4

我在新的MVC 5应用程序中找不到控制器路径.我一直在关注一些教程,一切看起来都写得不错,但是当浏览浏览器中的地址时,我总是得到:

找不到与请求URI"// localhost:50473/api/tile"匹配的HTTP资源

/Controller/ProductController.cs

using System;
using System.IO;
using System.Web;
using System.Net;
using coal.Models;
using System.Linq;
using System.Text;
using System.Net.Http;
using System.Web.Http;
using System.Collections.Generic;

namespace coal.Controllers
{
    public class ProductController : ApiController
    {
        public void GetAllProducts() { }
        [HttpGet]
        public string Tiles(string urls) { }
    }
}
Run Code Online (Sandbox Code Playgroud)

/App_Start/WebApiConfig.cs

namespace coal
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "Default",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            config.Routes.MapHttpRoute(
                name: "api",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { controller = "coal", action = "Index", id = "" }
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我错过了什么,只是无法弄清楚它是什么.任何见解都会有所帮助

谢谢

ps2*_*oat 6

您的方法的名称是Tiles,但您正试图命中tile.

public string Tiles(string urls) { }
Run Code Online (Sandbox Code Playgroud)

编辑:更新以包含ProductController在正确的使用路线:

此外,您的路由定义为api/{controller}/{action},您的控制器名称是ProductController.

您应该使用的URL是:api/product/tiles,除非您创建将Product/tiles行动映射到api/tiles路线的路线.

你的路线应该是这样的:

      config.Routes.MapHttpRoute(
            name: "Default",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)