Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api web api中的自定义和常规方法_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

Asp.net web api web api中的自定义和常规方法

Asp.net web api web api中的自定义和常规方法,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,起初,我对服务器有普通的GET/POST/PUT/DELETE请求,我的web api的config.route就足够了: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }

起初,我对服务器有普通的GET/POST/PUT/DELETE请求,我的web api的config.route就足够了:

            config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
            );
然后,我需要一个自定义操作(例如,我想要api/GetAllUsers-GET,而不是api/User/212-GET)

因此,我将配置更改为:

config.Routes.MapHttpRoute(
            name: "DefaultApiWithAction",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { action = "get" ,id = RouteParameter.Optional }
            );
        config.Routes.MapHttpRoute(
            name: "DefaultApiGet",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { action = "get", id = RouteParameter.Optional }
            );
        config.Routes.MapHttpRoute(
            name: "DefaultApiPost",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { action = "post", id = RouteParameter.Optional }
            );
        config.Routes.MapHttpRoute(
            name: "DefaultApiPut",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { action = "put", id = RouteParameter.Optional }
            );
        config.Routes.MapHttpRoute(
            name: "DefaultApiDelete",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { action = "delete", id = RouteParameter.Optional }
            );
现在的问题是,我无法访问经典的GET('DefaultApiGet')

编辑

换句话说,如果我有一个用户,我想得到他的一篇文章,或者所有文章,那么我想能够做到这一点(用户id=12345): “api/UserPost/12345”-获取用户12345的最后一篇文章 和
“api/UserPost/GetAll/12345”-获取用户12345的所有帖子

问题和解决方案已得到很好的解释

您可以尝试删除“DefaultApiWithAction”路径中的
id=RouteParameter.Optional
吗?我尝试过,但现在帖子不起作用。我得到:405-不允许使用此方法是否有任何帮助: