c# - OData v4 函数总是返回 404

标签 c# asp.net-web-api odata asp.net-web-api2 odata-v4

尝试从 OData v3 迁移到 OData v4。为什么我在尝试使用 OData 函数 时总是收到 404

Web API 配置:

ODataModelBuilder builder = new ODataConventionModelBuilder();
//etc
builder.EntitySet<LocalizableString>("LocalizableStringApi");
//etc
var getComparitiveTableFunction = builder.EntityType<LocalizableString>().Collection.Function("GetComparitiveTable");
getComparitiveTableFunction.Parameter<string>("cultureCode");
getComparitiveTableFunction.ReturnsCollection<ComparitiveLocalizableString>();
//etc
config.MapODataServiceRoute("OData_Kore_CMS", "odata/kore/cms", builder.GetEdmModel());

C#代码:

[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)]
[HttpGet]
//[ODataRoute("Default.GetComparitiveTable(cultureCode={cultureCode})")] // Tried this, but gets errors and I noticed the function is in the OData model anyway without this, so should be fine.
public virtual IHttpActionResult GetComparitiveTable([FromODataUri] string cultureCode)
{
    // Implementation
    return Ok(query);
}

从 $metadata 返回的 XML:

<Schema Namespace="Default">
    <Function Name="GetComparitiveTable" IsBound="true">
        <Parameter Name="bindingParameter" Type="Collection(Kore.Localization.Domain.LocalizableString)"/>
        <Parameter Name="cultureCode" Type="Edm.String" Unicode="false"/>
        <ReturnType Type="Collection(Kore.Localization.Models.ComparitiveLocalizableString)"/>
    </Function>
    ...

如您所见,它在模式/OData 模型中...但以下查询不起作用:

http://localhost:30863/odata/kore/cms/LocalizableStringApi/Default.GetComparitiveTable(cultureCode='en-US')

我也试过以下方法:

http://localhost:30863/odata/kore/cms/LocalizableStringApi/GetComparitiveTable(cultureCode='en-US')
http://localhost:30863/odata/kore/cms/Default.GetComparitiveTable(cultureCode='en-US')
http://localhost:30863/odata/kore/cms/GetComparitiveTable(cultureCode='en-US')

以上所有结果都会导致 404

那么...我做错了什么?

最佳答案

我通过向请求的 url 添加尾部斜杠解决了类似的问题。

关于c# - OData v4 函数总是返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063196/

相关文章:

java - 运算符 >> 不能应用于 char 和 long 类型的操作数

c# - 在 Web API 上取回 POST 数据

asp.net-web-api - 使用 WebApi 2 和 Entity Framework (代码优先)在 OData 中是否有自动 ETag 处理?

web-services - SOAP Web 服务和 OData 服务之间的具体区别是什么?

java - 如何在 olingo v4.3 中实现实体绑定(bind) odata 操作

c# - 如何统一在纹理上绘制圆圈?

c# - F#:连接到 Azure SQL 数据库?

c# - 通过“转义 cmd\p4v 不会删除\in c#

asp.net - 从不记名 token 获取自定义声明值(Web API)

c# - Asp.Net Web API ODATA 的 GROUP BY/不区分大小写扩展?