【问题标题】:WebApi controller added to MVC website Route 404WebApi 控制器添加到 MVC 网站 Route 404
【发布时间】:2016-04-10 01:17:52
【问题描述】:

我正在尝试从 JavaScript 函数调用 WebApi 方法。

通过 Fiddler,我可以看到正在发出的请求是:

http://localhost:49601/api/faults?page=1&pageSize=5&filter=&sort=insertedDate+desc

我最初使用 MVC 模板(在 Visual Studio 2015 中)创建了我的网站。我后来添加了一个 WebApi 控制器。我还将现有的 WebApiConfig.cs 添加到 App_Start 文件夹中。这保持不变:

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

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

我的新 WebApi 控制器开始如下:

public class FaultsController : ApiController
{
    private ESBContext _context;
    private IRepository<Fault> FaultRepository;
    private static ILog _logger =
        LogManager.GetLogger(
        System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    public FaultsController(ESBContext context)
    {
        this.FaultRepository = new EFRepository<Fault>(context);
        _context = context;
        _context.Database.Log = (x => _logger.Debug(x));  //send EF queries via log4net
    }

    public IHttpActionResult GetFaults([FromUri]int page, [FromUri]int pageSize, [FromUri]string filter, [FromUri]string sort)
    {

发出请求后,我得到了 404 回复。谁能告诉我哪里出错了?

【问题讨论】:

    标签: asp.net-web-api asp.net-web-api-routing


    【解决方案1】:

    找到了!

    我需要在 Global.asax.cs 的 Application_Start 方法中添加以下内容:

    GlobalConfiguration.Configure(WebApiConfig.Register);
    

    【讨论】:

      猜你喜欢
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多