webapi同一个Controller多个函数

务实进取 2014-07-28 02:41:58
现在用webapi发现一个问题,比如用get方法调用的的时候函数名好像没用,不管你写什么名称,它只认调用相同参数的一个函数,而且以get开头的函数虽然名称不同但是只要参数相同就会报错,无法调用怎么回事
...全文
7063 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
挖坟贴
加油馒头 2018-05-17
  • 打赏
  • 举报
回复
看路由配置,没有设定Action ,设定以后就好了 设定Action 怎么制定post还是get?
lq_1623 2017-04-11
  • 打赏
  • 举报
回复
CSDN,真的是没落了。没登录,填写的回复,直接刷没了。也碰到这问题,挖下坟。
wylp_19 2017-02-11
  • 打赏
  • 举报
回复
帮忙顶一个。。。。。。。。。。。
wanghui0380 2017-02-10
  • 打赏
  • 举报
回复
路由不对,路由只到了control层,没到action层 额,还不对,刚看到,这居然是14年滴帖子,楼上那位你挖坟了
code-jam 2017-02-10
  • 打赏
  • 举报
回复
引用 10 楼 foren_whb 的回复:
微软的webapi是严格遵循realfull设计思想的,本就应该这样处理。 至于你的疑问,个人觉得是对rest思想认识和webapi的理解不够造成的。 如果不习惯rest风格的设计,大可不必用webapi,直接用mvc框架,也可以实现同样的业务需求
卧槽,风云大师你好!
  • 打赏
  • 举报
回复
mvc4 的webapi 不好用,它规定的参数,格式太死了,我感觉,本来我也想用的 什么从url就能看出是什么操作,我觉得不是很方便 后来用wcf
hercules135 2015-11-19
  • 打赏
  • 举报
回复
刚接触webapi的时候我也发现无法指定我想要的action,后来看了看路由 App_Start/WebApiConfig.cs 就明白了,人家默认配置压根没有 {action} 一直到现在我都不明白,如果有很多重复参数类型的方法,这样做太麻烦了吧,难道每次都开一个新的controller? 所以后来直接改了路由...
config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
正怒月神 版主 2015-11-19
  • 打赏
  • 举报
回复
楼主,根本问题在于,webapi如果你没有设置api的路由 那么,默认是遵从 restfull的风格的。接口针对某个资源,这样的方式。换句话说,其实默认webapi只有 get,post,delete,put4种方法名。四中方法名,根据你提交的形式来区别。 就像10楼说的一样。 当然,如果你不习惯这种restful风格,那你可以修改你的路由, 像13楼一样
楉枫 2015-11-18
  • 打赏
  • 举报
回复
修改方法如下: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = RouteParameter.Optional } ); 加上action就好。
楉枫 2015-11-18
  • 打赏
  • 举报
回复
楼上正解,如果需要在一个Controller里面写多个post或者是get等函数的话,需要修改web api 的路由,在App_Start--WebApiConfig 里面,
  • 打赏
  • 举报
回复
默认webapi不指定action的……你可以指定action
丰云 2015-04-25
  • 打赏
  • 举报
回复
微软的webapi是严格遵循realfull设计思想的,本就应该这样处理。 至于你的疑问,个人觉得是对rest思想认识和webapi的理解不够造成的。 如果不习惯rest风格的设计,大可不必用webapi,直接用mvc框架,也可以实现同样的业务需求
insus 2015-04-25
  • 打赏
  • 举报
回复
创建一个自定义路由: http://www.cnblogs.com/insus/p/4453615.html 在客户端就可以指定方法名了。
xw852036 2015-04-25
  • 打赏
  • 举报
回复
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } );
宝_爸 2014-07-30
  • 打赏
  • 举报
回复
用不同的Controller吧。 换位思考下,给你一个url地址,一样的参数,你能知道需要调用哪个函数吗?
务实进取 2014-07-30
  • 打赏
  • 举报
回复
这样就沉了么
Adol1111 2014-07-30
  • 打赏
  • 举报
回复
如果必须按方法名匹配的话可以改一下路由,可以参考MVC的方式,改成 controller/action 不然还是拆成多个控制器比较好
zhujiazhi 2014-07-30
  • 打赏
  • 举报
回复
这个要看路由的吧,因为默认的路由是没有action的
务实进取 2014-07-28
  • 打赏
  • 举报
回复
public UserModel getdySession(string SName, string SValue) { SetSession(SName,SValue); return new UserModel() { UserID = SName, UserName = GetSession(SName) }; } public string get1111(string SName, string SValue) { SetSession(SName, SValue); return GetSession(SName); } 比如这两个函数名称不同返回值不同,但是这样不能存在调用的时候无法识别调用哪个
加载更多回复(1)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧