我无法在我的新MVC 5应用中找到控制器路线。我一直在关注一些教程,所有内容似乎都写得很好,但是当浏览浏览器中的地址时,我总是得到:
找不到与请求URI匹配的HTTP资源" // localhost:50473 / api / tile"
/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) { }
}
}
/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 = "" }
);
}
}
}
我知道我错过了什么,只是无法弄清楚它是什么。任何见解都会有所帮助。
由于
答案 0 :(得分:6)
您的方法名称为Tiles
,但您尝试点击tile
。
public string Tiles(string urls) { }
此外,您的路线定义为api/{controller}/{action}
,您的控制器名称为ProductController。
您应使用的网址为:api/product/tiles
,除非您创建的路线将Product/tiles
操作映射到api/tiles
路线。
并且您的路线应该类似于:
config.Routes.MapHttpRoute(
name: "Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
答案 1 :(得分:0)
您的路线映射需要允许mvc确定您正在寻找的控制器和操作方法。这可以通过两种方式完成,您可以在路线字符串中添加{controller}
和{action}
,也可以在{{1}中指定controller
和action
}}
例如,您可以设置这样的路线:
defaults
然后,您的方法的网址为config.Routes.MapHttpRoute(
name: "Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
,与控制器名称“Product”和操作方法名称“tiles”匹配。
或者,您可能希望指定的URL匹配,在这种情况下,您可以执行以下操作:
http://localhost:50473/api/Product/Tiles