gpt4 book ai didi

c# - Web API OData (OData Client v4) key 中的正斜杠

转载 作者:太空宇宙 更新时间:2023-11-03 23:21:38 27 4
gpt4 key购买 nike

我已经创建了一个 OData Web API,但我在查找主键包含正斜杠的数据时遇到问题。

此 url 按预期返回数据:
/api/SalesOrders('12345')

但是这个在 key 中带有正斜杠的失败了:
/api/SalesOrders('12345/1')
即使在编码时:
/api/SalesOrders('12345%2F1')

在出现的错误中(见下文),看起来像您期望的那样将最后的正斜杠转换为反斜杠,因为它是 url 的一部分而不是查询字符串中:

enter image description here

如果我改用以下 url,其中正斜杠在查询字符串中,则数据会正确返回:
/api/SalesOrders?$filter=SalesOrderNumber eq 12345/1

如果我自己生成 url,这就不是什么大问题。
但是,我正在使用 OData v4 Client Code Generator

所以代码中的调用实际上是这样的:

var salesOrder = erpClient.SalesOrders.ByKey(worksOrder.SalesOrderNumber).GetValue();

这会生成在查询字符串之前包含正斜杠的 url,因此失败。

  1. 这是 OData v4 客户端的已知问题吗?
  2. 是否有强制在主键类型调用上使用查询字符串的设置?

我可以通过强制正斜杠进入查询字符串来解决这个问题,如下所示:

var salesOrder = erpClient.SalesOrders.Where(so => so.SalesOrderNumber == "12345/1"&& so.SalesOrderNumber == so.SalesOrderNumber).FirstOrDefault();

这会强制正斜杠进入查询字符串:
/api/SalesOrders?$filter=SalesOrderNumber eq '450993/1' and SalesOrderNumber eq SalesOrderNumber

这感觉很乱,我想避免离开 OData v4 客户端,因为我们有几个应用程序已经在使用它。

还有什么我可以做的让这项工作更整洁吗?

脚注:

我按照此博客上的流程处理特殊字符,但这不包括有关如何处理正斜杠的建议:

using-wcf-data-service-with-restricted-characters-as-keys

最佳答案

看看 ODataPathAndSlashEscapeSample在 Github 上。基本思想是子类化 DefaultODataPathHandler并覆盖 Parse 方法。然后将自定义路径处理程序的实例提供给 MapODataServiceRoute Web API 配置代码中的方法。

关于c# - Web API OData (OData Client v4) key 中的正斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198766/

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