【发布时间】:2017-01-05 04:24:43
【问题描述】:
我尝试在同一个项目中使用 MVC 控制器和 Web API 控制器,但我收到了 Web API 的 404 错误。我在 VS 2015 中将项目作为 MVC 项目启动,但随后添加了 Web API 控制器,并且使用默认代码给出了 404 错误。
可能的解决方案是什么?我在 Stack Overflow 上尝试了一些解决方案,但没有奏效。我试过的一个是这个问题的公认答案:All ASP.NET Web API controllers return 404
Global.asax:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);//WEB API 1st
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
WebApiConfig:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
RouteConfig:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
Web API 控制器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using O365_APIs_Start_ASPNET_MVC.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using O365_APIs_Start_ASPNET_MVC.Helpers;
using System.Threading.Tasks;
namespace O365_APIs_Start_ASPNET_MVC.Controllers
{
public class MAILAPIController : ApiController
{
private MailOperations _mailOperations = new MailOperations();
//async Task<BackOfficeResponse<List<Country>>>
// GET: api/MAILAPI
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET: api/MAILAPI/5
public string Get(int id)
{
return "value";
}
// POST: api/MAILAPI
public void Post([FromBody]string value)
{
}
// PUT: api/MAILAPI/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE: api/MAILAPI/5
public void Delete(int id)
{
}
}
}
我在同一解决方案中恢复 NuGet 包时也遇到错误:
尝试还原包时出错:指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。
【问题讨论】:
-
您尝试调用的控制器是什么样的?
-
你在哪里打电话给
WebApiConfig.Register? -
@MitchelSellers 将添加控制器代码
-
@Richard 将在调用寄存器的地方添加文件代码
-
@Richard 我尝试添加它,但是当我添加这一行时 ----GlobalConfiguration.Configure(WebApiConfig.Register);---- 在 application_start 项目中的 Registerallareas 给出 404 运行时错误之后。通过删除提到的行,我可以运行 mvc cotroller 但不能运行 webapi 控制器并添加行为两个控制器提供运行时 404
标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api