我有以下MVC控制器:
{{1}}
我希望能够通过以下两种方式访问它:
str.format
当我尝试选项2时,我得到了有效的回复。但是,当我尝试选项1时,我得到:
{ "消息":"未找到与请求URI匹配的HTTP资源' http://localhost/Perform/API/SystemCheck/EnvironmentValidate'。", " MessageDetail":"在控制器上没有找到任何操作' SystemCheck'符合名称' EnvironmentValidate'。" }
是否找不到我的控制器操作,因为方法名称被称为{{1}},但路由将其指定为" EnvironmentValidate"?
以下是我配置RouteConfig.cs的方法:
{{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属性路由。