gpt4 book ai didi

c# - Web Api 2.2 OData V4 函数路由

转载 作者:可可西里 更新时间:2023-11-01 08:04:04 26 4
gpt4 key购买 nike

我有一个使用 OData v4 的 Web Api 2.2 项目。正常的 EntitySet 配置对所有 http 谓词都按预期工作。我遇到问题的地方是试图公开一个自定义函数。我开始尝试做一些与标准示例不同的事情,但我一直支持直到尝试让基本示例函数正常工作。

这是我的启动配置(直接来自 MS 示例):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.OData.Builder;
using System.Web.OData.Extensions;

namespace Test.Service
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{

// other entitysets that don't have functions

builder.EntitySet<Product>("Products");
builder.Namespace = "ProductService";
builder.EntityType<Product>().Collection
.Function("MostExpensive")
.Returns<double>();

config.MapODataServiceRoute(
"odataroute"
, "odata"
, builder.GetEdmModel()
);
}
}
}

这是我的 Controller :

using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.OData;

namespace Test.Service.Controllers
{
public class ProductsController : ODataController
{
private EntityContext db = new EntityContext();

[EnableQuery]
public IQueryable<Product> GetProducts()
{
return db.Products;
}

[HttpGet]
public IHttpActionResult MostExpensive()
{
double test = 10.3;
return Ok(test);
}
}
}

常规 GET,工作正常:

http://something/odata/Products

但是,以下总是给我一个 404:

http://something/odata/Products/ProductService.MostExpensive()

我已经用命名空间等尝试过许多不同的东西......所以,它不像所有的例子一样工作,但我不知道如何更深入地挖掘是什么出错了。 http://something/odata 公开的元数据没有提供任何线索。有没有其他方法可以发现应该在何处(以及如何)公开此函数?

编辑:这是我关注的 Microsoft 示例的链接: http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/odata-actions-and-functions

最佳答案

请按如下方式更改元素,如果请求 URL 中有点,建议采用以下方式:

 <system.webServer>
   <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

如果

http://something/odata/Products/ProductService.MostExpensive()

被请求,我可以得到数据:

{
@odata.context: "http://localhost:14853/odata/$metadata#Edm.Double",
value: 3
}

关于c# - Web Api 2.2 OData V4 函数路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311955/

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