WebAPIRoutingtoActionName我需要一个控制器来返回JSON以供JavaScript使用,所以我继承了ApiController类,但它的行为并不像我预期的那样那。Apress书ProASP.NETMVC4以及我找到的大多数在线示例给出了以下示例:","橘子","香蕉"};}通过URL:http://mysite/services/methodfruit但这永远行不通-找不到资源。我可以使用它的唯一方法是让控制器为每个HTTP动词包含不同的方法,然后:调用GET方法的http://mysite/api/services。我查看了Apress网站,但他们似乎没有任何论坛,当前源代码在VS2012中,我没有使用。我检查了源文件,他们似乎认为前一种方法应该有效。是否支持前一种方法?是的...通常您必须遵循ASP.NETWEBAPI所期望的默认命名约定。查看此官方文档:ASP.NETWebAPI中的路由如果您不想遵循约定,可以尝试上面链接的文档中描述的“按操作名称路由”部分。按操作名称路由使用默认路由模板,WebAPI使用HTTP方法来选择操作。但是,您也可以创建一个路由,其中??操作名称包含在URI中:routes.MapHttpRoute(name:"ActionApi",routeTemplate:"api/{controller}/{action}/{id}",defaults:new{id=RouteParameter.Optional});在您的情况下,您必须这样做:[HttpGet]publicstring[]MethodFruit(){returnnewstring[]{"Apple","Orange","Banana"};}如果想让WebAPI在路由时查找动作名称,将App_Start文件夹中的WebApiConfig.cs类修改为:config.Routes.MapHttpRoute(name:"DefaultApi",routeTemplate:"api/{controller}/{action}/{id}”,默认值:新{id=RouteParameter.Optional});然后,您可以向http://mysite/api/Services/MethodFruit发出GET请求,以添加有关上述答案的其他信息。添加RoutePrefix有时可以解决问题。希望这对你有帮助。调节器[RoutePrefix("api/Services")]publicclassServicesController:ApiController{[System.Web.Http.AcceptVerbs("GET","POST")][System.Web.Http.HttpGet][Route("MethodFruit")]publicstring[]MethodFruit(){returnnewstring[]{"Apple","Orange","Banana"};在配置中routes.MapHttpRoute(name:"ActionApi",routeTemplate:"api/{controller}/{action}/{id}",defaults:new{id=RouteParameter.Optional});我面临同样的问题,我发现我的代码使用System.Web.Mvc;我已经使用System.Web.Http导入了Mvcintead。所以它使用Mvc路由而不是webApi路由。我使用它而不是使用System.Web.Http并且它对我有用。为了新手不要重蹈我的覆辙以上是C#学习教程:WebAPI路由到操作名称共享的全部内容,如果对你有用,需要进一步了解C#学习教程,希望各位多多关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
