Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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#WebAPI 2获得使用相同方法的两条路由_C#_C# 4.0_Routes_Asp.net Web Api2 - Fatal编程技术网

如何使用C#WebAPI 2获得使用相同方法的两条路由

如何使用C#WebAPI 2获得使用相同方法的两条路由,c#,c#-4.0,routes,asp.net-web-api2,C#,C# 4.0,Routes,Asp.net Web Api2,我正在将C#与Web API 2项目一起使用。我想要一个控制器,它有一个包含同一方法的两个可能路由的函数。如果未设置大小,我希望它传递null。到目前为止,我已经尝试: public class PController : ApiController { [Route("~/personphoto/{id:Guid}")] [Route("~/personphoto/{id:Guid}/sizes/{string:size}")] [AllowHeaderFilter(H

我正在将C#与Web API 2项目一起使用。我想要一个控制器,它有一个包含同一方法的两个可能路由的函数。如果未设置大小,我希望它传递null。到目前为止,我已经尝试:

public class PController : ApiController
{
    [Route("~/personphoto/{id:Guid}")]
    [Route("~/personphoto/{id:Guid}/sizes/{string:size}")]
    [AllowHeaderFilter(HttpMethodFlag.Get)]
    public IHttpActionResult GetPhoto(Guid id, string size)
    {
        // Do Something
    }
}

这可能吗?

我相信这正是您想要的:

[Route("~/personphoto/{id:Guid}/{sizes?}/{size?}")]
public IHttpActionResult GetPhoto(Guid id, string sizes = "", string size = "")

[Route(“~/personphoto/{id:Guid}/size/{string:size}”)]
路由有什么问题?如果不希望传递大小,则将其作为null传递。你想创建两条路由有什么特别的原因吗?我想创建一条路由,分配一个默认的大小,这样你就不必输入size/{size}inI猜测“size”是字符串文字,而不是参数。