仅带可选参数的Asp.net核心WebAPI路由不起作用

仅带可选参数的Asp.net核心WebAPI路由不起作用,asp.net,asp.net-core,webapi,Asp.net,Asp.net Core,Webapi,我正在尝试创建一个GET路由,其中包含4个可选参数。没有必需的参数 我的路线是这样的 [Produces("application/json")] [HttpGet("SearchWhatever", Name = "GetWhatever")] public IEnumerable<TmpObject> SearchWhatever(long? eid= null, long? pid = null

我正在尝试创建一个GET路由,其中包含4个可选参数。没有必需的参数

我的路线是这样的

    [Produces("application/json")]
    [HttpGet("SearchWhatever", Name = "GetWhatever")]
    public IEnumerable<TmpObject> SearchWhatever(long? eid= null, long? pid = null, string name= null,  string firstname= null)
    {
        //do Smth
    }
我如何实现我的目标?有可能吗?我认为给一个字符串一个像null这样的默认值会使参数变得可选


提前感谢

首先,这里有一个演示 将此添加到控制器:

#nullable enable
操作(使用
string?name,string?firstname
,因为您使用了
nullable enable
,所以字符串类型可以为null):

[HttpGet]
[路线(“搜索任何东西”)]
public IEnumerable searchwhich(long?eid、long?pid、string?name、string?firstname)
{
返回新列表{“成功”};
//做Smth
}
结果:

首先,您没有“ean”查询参数。修复了它,它只是一个输入错误(在我的代码中是正确的)。请尝试使用“”作为字符串参数的默认值。(“…string name=”“,string firstname=“…”)已尝试此操作,但将产生相同的错误。哪个版本的asp.net core?3.1?
#nullable enable
[HttpGet]
        [Route("SearchWhatever")]
        public IEnumerable<String> SearchWhatever(long? eid, long? pid,string? name,string? firstname)
        {
            return new List<String> { "success" };
            //do Smth
        }