带有字符串参数的 OData 未绑定函数似乎不起作用 - OData DotNetCore

OData unbound function with a string parameter does not seem to work - OData DotNetCore

我第一次研究用于 .NETCORE 的 OData,但似乎无法实现一些非常简单的事情。

我创建了一个未绑定的函数,它 returns 一个字符串并接受一个字符串参数,我已经阅读了多个文档并准确地复制了他们在那里所做的事情(除了,我将 int 参数替换为字符串)。

所以我完成了以下设置(我使用的是 .NET 5 / API):

 app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
    endpoints.MapRazorPages();
    endpoints.MapHub<DataHub>("/dataHub"); // map hub enpoint
    endpoints.MapODataRoute("api", "api", GetEdmModel()); // oData endpoints
});

private IEdmModel GetEdmModel()
{
    var builder = new ODataConventionModelBuilder();

    builder.Function("GetClients").Returns<string>().Parameter<string>("UserId");

    return builder.GetEdmModel();
}

ApiController:(但控制器应该无关紧要,因为它是一个未绑定的函数)

[HttpGet]
[ODataRoute("GetClients(UserId={UserId})")]
public string GetClients([FromODataUri] string UserId)
{
    return string.Empty;
}

我试过的端点:

  1. localhost/GetClients(UserId=abc)
  2. localhost/api//GetClients(UserId=abc)

当我用 int 替换 string 时,出于某种原因,它确实有效..

必须在单引号中提供字符串参数:

localhost/api/GetClients(UserId='abc')