Asp.net web api 属性路由-可选参数不工作?

Asp.net web api 属性路由-可选参数不工作?,asp.net-web-api,attributerouting,Asp.net Web Api,Attributerouting,据 使用属性路由时,可以通过添加问号(?)来获得可选参数。但是,它不适合我(ASP.NET Web API 5) [Route(“staff/{featureID?}”)] 公共列表GetStaff(int?featureID){ List staff=null; 返回工作人员; } 如果我使用/staff/1等,效果很好,如果我使用/staff我会得到通常的: “未找到与请求URI匹配的HTTP资源…” “在匹配的控制器上找不到任何操作 请求。” 我是不是漏掉了一封推荐信?还是做错了?如果我

使用属性路由时,可以通过添加问号(?)来获得可选参数。但是,它不适合我(ASP.NET Web API 5)

[Route(“staff/{featureID?}”)]
公共列表GetStaff(int?featureID){
List staff=null;
返回工作人员;
}
如果我使用
/staff/1
等,效果很好,如果我使用
/staff
我会得到通常的:

“未找到与请求URI匹配的HTTP资源…”

“在匹配的控制器上找不到任何操作 请求。”

我是不是漏掉了一封推荐信?还是做错了?

如果我做了:

[路由(“staff/{featureID=null}”)]

而不是

[路由(“staff/{featureID?}”)]

它起作用了


从技术上讲,这不能回答我的问题,但它让我工作

我也遇到了同样的问题,解决方法也有点不同。然而,它仍然没有像那篇博文中所说的那样对我有效。我没有在路由定义中添加默认参数值,而是将其添加到函数定义中

为了使我的示例正常工作,我必须这样做,因为我使用的是
string
而不是
int
,并且在路由定义中添加默认值
null
导致我的函数参数具有字符串值
“null”

[Route(“staff/{featureID?}”)]
公共列表GetStaff(int?featureID=null){
List staff=null;
返回工作人员;
}

这是因为您始终必须为可选参数设置默认值,即使默认值为空。这就是为什么这样做的原因:

[Route("staff/{featureID=null}")]

从这一点来看,这是非常有意义的,因为正常方法上的可选参数也是这样做的,对“null”部分也有很好的了解,那么为什么要使用“?”字符功能呢?
[Route("staff/{featureID?}")]
public List<string> GetStaff(int? featureID = null) {
    List<string> staff = null;          
    return staff;
}
[Route("staff/{featureID=null}")]