【问题标题】:OData SingleResult<object> method throws 404 errorOData SingleResult<object> 方法抛出 404 错误
【发布时间】:2015-07-30 23:32:53
【问题描述】:

我的 OData 方法如下所示。第一种方法效果很好。但是第二种方法会抛出 404 Not found 错误。

[EnableQuery]
        public IQueryable<Personal> GetPersonalDetailsFull()
        {
            return db.PersonalDetails;
        }

    [EnableQuery]
        public SingleResult<Personal> GetPersonalDetail([FromODataUri] int key)
        {
            var data = db.PersonalDetails.Where(personalDetail => personalDetail.AutoId == key).AsQueryable();
            return SingleResult.Create(data);
        }

我的处理程序的 web.config 设置如下所示

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="/odata/*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

当我提出请求时

http://localhost:56234/odata/PersonalDetailsFull - 这可以正常工作并获取所有数据

当我创建http://localhost:56234/odata/PersonalDetailsFull(16) 时,它显示在提琴手和客户端中未找到 404。

非常感谢任何帮助。

【问题讨论】:

  • 我尝试了不同的方法,但没有运气。想知道处理程序是否不接受括号“(16)”,不确定。但是路径是“/odata/*”所以这不应该是问题。

标签: odata asp.net-web-api2


【解决方案1】:

您的实体类型名称是什么?基本上,请求模板的约定路由 ~/entityset/key 遵循以下操作名称约定:

1. HttMethodName + entityTypeName
2. HttpMethodName

因此,请确保您的第二个操作名称遵循 #1 约定。谢谢。

【讨论】:

  • 我的实体类型名称是“PersonalDetail”,我将控制器称为“PersonalDetailsFullController”
【解决方案2】:

对不起。我的 WebApicConfig 构建器配置错误。

而不是跟随 builder.EntitySet("PersonalDetailsFull");

我一直保留 builder.EntitySet("PersonalDetailsFull");

抱歉打扰了。

谢谢

【讨论】:

  • 4 年前的长镜头......但我遇到了这个确切的问题。您提到的构建器的两条线都是相同的。你记得错了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 2023-03-26
  • 2013-02-03
  • 2019-07-16
  • 2015-03-08
  • 2014-02-26
  • 1970-01-01
相关资源
最近更新 更多