【问题标题】:ASP.NET MVC API controller not hittingASP.NET MVC API 控制器未命中
【发布时间】:2021-12-16 18:29:33
【问题描述】:

我已将 ASP.NET Web API 添加到在 Visual Studio 2019 中开发的 ASP.NET MVC 5 Web 应用程序项目中。

WebApiConfig:

public class WebApiConfig {
    public static void Register(HttpConfiguration config) {
         config.MapHttpAttributeRoutes();
         config.Routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
         );
    }
}

Global.asax.cs:

public class MvcApplication : HttpApplication {
    protected void Application_Start() {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        GlobalConfiguration.Configure(WebApiConfig.Register);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

Api 控制器方法:

// GET: api/Web
public IEnumerable<string> Get() {
      return new string[] { "value1", "value2" };
}

当我点击https://localhost:44324/api/web 时,浏览器会出现此错误:

找不到资源。
说明:HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。

请求的网址:/api/web

【问题讨论】:

标签: rest asp.net-web-api asp.net-mvc-5


【解决方案1】:

在 MVC 5 路由中,您可以尝试使用属性路由来克服此错误。

解决方案如下所示。

API 控制器方法:

//write this above the class and below namespace
    [ApiController]
    [Route("[controller]")]
// GET: api/Web
    [HttpGet]
    public IEnumerable<string> Get() {
          return new string[] { "value1", "value2" };
    }

当你点击 https://localhost:44324/api/web 但这里的“Web”是控制器 ID 时,你必须先提到它,然后浏览器不会给你一个错误的方法:

【讨论】:

    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多