【问题标题】:c# Asp.net Web API Attribute Routing 404 Errorc# Asp.net Web API 属性路由 404 错误
【发布时间】:2019-05-21 00:18:53
【问题描述】:

我无法弄清楚为什么我的属性路由不起作用,第一个操作方法有效但第二个方法无效。

这是我的设置:

public class ActivMobileController : ApiController
{
    [HttpGet]
    [Route("api/ActivMobile/Impact/{token}")]
    public IHttpActionResult Impact(string token)
    {
     ...   
    }

    [HttpGet]
    [Route("api/ActivMobile/Attachments/{id}")]
    public IHttpActionResult Attachments(string id)
    {
     ...
    }
 }

这是我的 WebApiConfig:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Reference: https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
        config.EnableCors(new EnableCorsAttribute(CloudConfigurationManager.GetSetting("AllowOrigins"), "*", "*"));

        // Web API routes
        config.MapHttpAttributeRoutes();

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

这是我正在测试的 URL,它给出了 404 错误

http://localhost:60105/api/ActivMobile/Attachments/39E522838A652508112E9AD1E0E831C7

【问题讨论】:

  • 查看我的回答,如果解决了您的问题,请记得点赞并标记为正确
  • @johnny5 它没有修复它,我想不出任何我丢失的东西。

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


【解决方案1】:

当 API 已经在默认模板中时,您指定了两次 API

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

从你的路由中移除多余的 Api/activMobile

[Route("Impact/{token}")]
public IHttpActionResult Impact(string token)
{
 ...   
}

[HttpGet]
[Route("Attachments/{id}")]
public IHttpActionResult Attachments(string id)
{
 ...
}

【讨论】:

猜你喜欢
  • 2014-07-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 2017-08-16
  • 2013-07-10
  • 2014-09-23
相关资源
最近更新 更多