首页 > 解决方案 > 自定义路由 未找到与请求 URI 匹配的 HTTP 资源

问题描述

我的控制器看起来像这样

 [RoutePrefix("api/foo")]
public class CustomUserHintsController : ApiController
{
    private ApplicationDbContext db = new ApplicationDbContext();

    [HttpPost]
    [Route("bar")]
    public async Task<IHttpActionResult> GetUserHints(string Id)
    {

 ..................

我的 webconfig.cs 看起来像这样

 public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services
        // Configure Web API to use only bearer token authentication.
        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

        // Web API routes
        config.MapHttpAttributeRoutes();

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

        );

        // Enforce HTTPS
        config.Filters.Add(new LocalAccountsApp.Filters.RequireHttpsAttribute());
    }
}

我做错了什么?

 https://localhost:SOMEPORTNUMBER/api/foo/bar

返回错误

我已经检查了几个类似这样的帖子没有找到与请求 URI 匹配的 HTTP 资源

未找到与请求 URI 匹配的 HTTP 资源

未找到与请求 URI 匹配的 HTTP 资源

编辑: Global.asax.cs 看起来像这样,我的应用程序中没有 MVC 关键字

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

当我传入 Id 时,我得到 404 - 您正在寻找的资源已被删除

标签: c#asp.netasp.net-web-api

解决方案


根据评论,您缺少 id

https://localhost:SOMEPORTNUMBER/api/foo/bar?id= “测试”


推荐阅读