【发布时间】:2014-12-14 18:59:58
【问题描述】:
我精通 MVC 5,但 web api 2 对我来说是新的。我正在尝试将 webapi 控制器添加到我的 MVC 项目中,但我无法访问它的路径。 我在一个名为 webapi 的新文件夹中添加了一个 web api 控制器,控制器的名称是 searchcontroller,在我的 MVC 5 项目中。 我无法访问它的路径,应该是: /api/搜索/获取。 我认为这可能与我在 Global Ajax 中的 App Start 相关:
请帮忙! 这是应用程序启动中的代码:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(config =>
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ApiById",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "ApiByName",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: null,
constraints: new { name = @"^[a-z]+$" }
);
config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "Get" }
);
});
控制器代码:
public class WebAPISearchReultsController : ApiController
{
public IEnumerable<ICE.Logic.ArticleSearchResult> Get(string searchQuery)
{
return SearchLogic.Instance.GetArticleSearchResults(searchQuery);
}
}
【问题讨论】:
-
你的控制器是什么样的?或者这是你实际上不能做的部分?
-
我在原帖中添加了控制器代码
-
您尝试从 Nuget 将 webapi 添加到您的 MVC 项目还是手动添加?从 Nuget 添加将帮助您将路由模板等正确放置在适当的位置。
-
我手动添加:这就是我所做的:我在根目录中添加了一个新文件夹,将其命名为 WebAPI,并在这个新文件夹中添加了一个 WebAPI 控制器
-
我建议你使用 nuget。 web.config 中有很多设置会影响到这一点。
标签: c# asp.net-mvc asp.net-mvc-4