Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
C# 如何在Web.Api中添加多个路由_C#_Asp.net Web Api_Routes - Fatal编程技术网

C# 如何在Web.Api中添加多个路由

C# 如何在Web.Api中添加多个路由,c#,asp.net-web-api,routes,C#,Asp.net Web Api,Routes,我已经创建了一个asp.net web.api。我有一个名为Books的控制器,它有两个类似的方法 public IHttpActionResult Read(string pass, string Id) public IHttpActionResult Update(string pass, string Id) 如何在webApiConfig文件中为这两种方法添加路由 现在我只有这个关于Read方法的工作 config.Routes.MapHttpRoute(

我已经创建了一个asp.net web.api。我有一个名为Books的控制器,它有两个类似的方法

public IHttpActionResult Read(string pass, string Id)

public IHttpActionResult Update(string pass, string Id)
如何在webApiConfig文件中为这两种方法添加路由

现在我只有这个关于Read方法的工作

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{pass}/{Id}",
            defaults: new { transationId = RouteParameter.Optional }
        );
这个我可以像这样访问。。 Api/Books/xxxxpasscodexxx/1


更新方法的路径是什么样子的?

请看一看。您可以将控制器标记为APIController,指定常规路由,然后使用route参数定义http谓词和方法路径。这将覆盖您的Routes.MapHttpRoute定义。

您也可以使用当前默认路由进行更新。web api将提供[FromUri]属性,用于从Httprequestmessage的URI读取操作参数

[HttpPut]
    public IHttpActionResult Update([FromUri]string pass, [FromUri]string Id)
    {

        //do your stuff here and return
    }
您的请求应该是Api/Books?password=xxxx&string=abc

添加属性

[HttpGet]
public IHttpActionResult Read(string pass,int id)

[HttpGet]
public IHttpActionResult Update(string pass,int id)
在webapiconfig中添加路由

config.Routes.MapHttpRoute(
            name: "DefaultActionApi",
            routeTemplate: "api/{controller}/{action}/{pass}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
注意:这必须在现有路由之上,否则优先。

将路由更改为

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

谢谢@sakhib,它起作用了,但我必须删除默认路由,否则只有更新方法起作用