Web API 2:OData 4:操作返回404

马特

我有一个OData v4无法使用的动作方法;但是请注意,它的工作正常OData v3(我显然正在尝试更新我的项目)

OData操作方法:

[HttpPost]
public Translation Translate(ODataActionParameters parameters)
{
    // Implementation
}

组态:

ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Page>("Pages");
//etc (Other Entity Sets)

var pageEntityType = builder.EntityType<Page>();
var translateAction = pageEntityType.Collection.Action("Translate");
translateAction.Parameter<Guid>("pageId");
translateAction.Parameter<string>("cultureCode");
translateAction.Returns<Translation>();

//etc (Other Actions)

var route = config.MapODataServiceRoute("OData_CMS", "odata/cms", builder.GetEdmModel());

客户AJAX呼叫:

var data = {
    pageId: $("#CultureSelector_PageId").val(),
    cultureCode: $("#CultureSelector_CultureCode").val()
};

$.ajax({
    url: "/odata/cms/Pages/Translate",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(data),
    dataType: "json",
    async: false
})
.done(function (json) {
    //etc

我试图查看有关版本4中的OData操作的设置是否发生了任何变化,但似乎是相同的(请参阅:使用ASP.NET Web API 2.2的OData v4中的操作和函数

编辑

我发现OData v4使用Default命名空间并实现了该命名空间,如下所示:

首先,只需将我的AJAX调用更改为:

url: "/odata/cms/Pages/Default.Translate",

那没有用,所以我还补充说:

[ODataRoute("Default.Translate")]

[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)]

请按照此链接上的说明进行操作:http : //damienbod.wordpress.com/2014/06/16/web-api-and-odata-v4-crud-and-actions-part-3/

也不起作用。.我已经按照步骤操作...要么我是盲目丢失了这里的内容,要么是最新版本的ODatafor存在严重问题Web API

马特

好吧,在提出这个问题将近一年之后,我实际上再次尝试迁移到OData v4并遇到了同样的问题。我在这里忘记了最初的问题,问了一个新问题,然后找到了答案。有关更多详细信息,请参见OData v4函数始终返回404我很高兴地说现在一切都很好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章