gpt4 book ai didi

asp.net-web-api - 网络 API 2 : OData 4: Actions returning 404

转载 作者:行者123 更新时间:2023-12-03 18:37:18 25 4
gpt4 key购买 nike

我有一个 OData v4不工作的 Action 方法;但请注意,它在 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 操作设置的任何更改,但似乎相同(请参阅: Actions and Functions in OData v4 Using ASP.NET Web API 2.2)

编辑

我发现 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/ ..

也没有工作.. 我已经按照信中的步骤操作了......要么是我瞎了,在这里遗漏了一些东西,要么是最新版本的 OData 存在严重问题。为 Web API .

最佳答案

这可能是 IIS 的路由约定造成的,当 Uri 包含 dot 时,它会有自己的路由规则。
但是,在 odata v4 中,所有函数/操作调用都必须是命名空间限定的。那么这样的 Uri 中就会出现一个点,这会被 IIS 错误处理。

要摆脱这种情况,您可以尝试以下任一方法:

  • 开启runAllManagedModulesForAllRequests,在Web.config中添加以下内容




  • 但此选项可能存在一些潜在问题,请参阅此 post详情。
  • 打开项目特定设置,在 Web.config 中添加以下内容:


    <处理程序>



  • 关于asp.net-web-api - 网络 API 2 : OData 4: Actions returning 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071517/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com