MVC5控制器使用路由属性找不到任何操作

时间:2016-12-20 18:48:24

标签: c# asp.net-mvc asp.net-mvc-5

我有以下MVC控制器:

{{1}}

我希望能够通过以下两种方式访问​​它:

  1. exist
  2. str.format
  3. 当我尝试选项2时,我得到了有效的回复。但是,当我尝试选项1时,我得到:

    {   "消息":"未找到与请求URI匹配的HTTP资源' http://localhost/Perform/API/SystemCheck/EnvironmentValidate'。",   " MessageDetail":"在控制器上没有找到任何操作' SystemCheck'符合名称' EnvironmentValidate'。" }

    是否找不到我的控制器操作,因为方法名称被称为{{1}},但路由将其指定为" EnvironmentValidate"?

    以下是我配置RouteConfig.cs的方法:

    {{1}}

    我缺少什么想法?

    谢谢,

1 个答案:

答案 0 :(得分:1)

看起来您正在尝试使用WebApi控制器进行MVC属性路由。

routes.MapMvcAttributeRoutes()忽略了属性(因为它期望的命名空间之间存在不匹配),因此只有DefaultApiGet路由被映射。

您可以将ApiController切换为Controller,以便使用与您正在使用的当前属性路由匹配的MVC控制器(假设您使用的Route属性位于System.Web.Mvc命名空间。)

或者您可以将命名空间更新为System.Web.Http,这是WebApi命名空间,而是调用config.MapHttpAttributeRoutes()

此处有更多说明https://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2,用于设置WebApi属性路由。