现在用webapi发现一个问题,比如用get方法调用的的时候函数名好像没用,不管你写什么名称,它只认调用相同参数的一个函数,而且以get开头的函数虽然名称不同但是只要参数相同就会报错,无法调用怎么回事

解决方案 »

  1.   

    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);
            }
    比如这两个函数名称不同返回值不同,但是这样不能存在调用的时候无法识别调用哪个
      

  2.   

    用不同的Controller吧。换位思考下,给你一个url地址,一样的参数,你能知道需要调用哪个函数吗?
      

  3.   

    这个要看路由的吧,因为默认的路由是没有action的
      

  4.   

    如果必须按方法名匹配的话可以改一下路由,可以参考MVC的方式,改成 controller/action
    不然还是拆成多个控制器比较好
      

  5.   

     config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{action}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
      

  6.   

    创建一个自定义路由:
    http://www.cnblogs.com/insus/p/4453615.html
    在客户端就可以指定方法名了。
      

  7.   

    微软的webapi是严格遵循realfull设计思想的,本就应该这样处理。
    至于你的疑问,个人觉得是对rest思想认识和webapi的理解不够造成的。
    如果不习惯rest风格的设计,大可不必用webapi,直接用mvc框架,也可以实现同样的业务需求
      

  8.   

    默认webapi不指定action的……你可以指定action
      

  9.   

    楼上正解,如果需要在一个Controller里面写多个post或者是get等函数的话,需要修改web api 的路由,在App_Start--WebApiConfig 里面, 
      

  10.   

    修改方法如下:   
      config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                   routeTemplate: "api/{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = RouteParameter.Optional }
                );加上action就好。
      

  11.   

    楼主,根本问题在于,webapi如果你没有设置api的路由
    那么,默认是遵从 restfull的风格的。接口针对某个资源,这样的方式。换句话说,其实默认webapi只有 get,post,delete,put4种方法名。四中方法名,根据你提交的形式来区别。
    就像10楼说的一样。当然,如果你不习惯这种restful风格,那你可以修改你的路由,
    像13楼一样
      

  12.   

    刚接触webapi的时候我也发现无法指定我想要的action,后来看了看路由 App_Start/WebApiConfig.cs 就明白了,人家默认配置压根没有 {action}一直到现在我都不明白,如果有很多重复参数类型的方法,这样做太麻烦了吧,难道每次都开一个新的controller?所以后来直接改了路由...
    config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{action}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
      

  13.   

    mvc4 的webapi 不好用,它规定的参数,格式太死了,我感觉,本来我也想用的
    什么从url就能看出是什么操作,我觉得不是很方便
    后来用wcf
      

  14.   

    路由不对,路由只到了control层,没到action层额,还不对,刚看到,这居然是14年滴帖子,楼上那位你挖坟了
      

  15.   

    CSDN,真的是没落了。没登录,填写的回复,直接刷没了。也碰到这问题,挖下坟。
      

  16.   

    看路由配置,没有设定Action ,设定以后就好了设定Action 怎么制定post还是get?