【问题标题】:Accessing api controller method contained within an error访问错误中包含的 api 控制器方法
【发布时间】:2016-02-18 19:31:27
【问题描述】:

显然我做错了什么。因此提出了这个问题。

我有一个 MVC5 asp.net c# web 应用程序。

我在我的解决方案中创建了一个名为“Admin”的区域。

我在我的 Controllers 文件夹中添加了一个 api 控制器类。

我在里面添加了一个方法。

我已经为这个方法添加了一个路由。

当我使用浏览器(在实际服务器中)进行测试时,我收到一条错误消息,提示未找到。

这是我在浏览器中输入的内容:

https://my domain/Admin/Plan/List

这是 api 类:

[RoutePrefix("Admin")]
public class StripeController : ApiController
{
    [HttpGet]
    [Route("/Plan/List")]
    public string List()
    {
       //return something
    }
}

我在这里发现了一个类似的问题:

similar

但我可以看到我已经实现了这个?

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

【问题讨论】:

  • 你是如何处理 https 的,它对 http 有效吗?
  • 您是否为管理区域启用了属性路由?
  • 你有没有在你的Application_Start中打电话给MapHttpAttributeRoutes
  • @NikolaiDante 两者都是。但它应该适用于 https 以及我有一个证书,它适用于不在该区域下的其他 api 调用
  • @ChrisPickford 我相信它会在创建区域时自动添加,但这就是添加路线的重点?

标签: c# asp.net routes asp.net-apicontroller


【解决方案1】:

在您配置好路线后尝试注册您的区域,例如将您的 Application_Start() 更改为:

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

假设您在 RouteConfig 类中调用 MapMvcAttributeRoutes()

【讨论】:

  • 感谢您的建议。我试过了,恐怕没有用。是的,我的 RouteConfig 类中有 MapMvcAttributeRoutes()。但更相关的事情是把 config.MapHttpAttributeRoutes();在我已经完成的 WebApiConfig 类中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多