问题标签 [odata-v4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1873 浏览

c# - OData V4 客户端代码生成器和处理 401 响应

我有一个使用自定义身份验证机制的带有 OData V4 服务的 WebAPI 2.2。基本上,它类似于 OAuth 的 Bearer 身份验证,即使用用户名和密码向特定端点发出请求并返回令牌。然后,该令牌将包含在所有后续请求的 Authorization 标头中。我正在使用 OData V4 客户端代码生成器(2.3.0)并使用 DataServiceContext 的 BuildingRequest 事件手动添加授权标头,如下所示......

我遇到的问题是令牌在一定时间后过期,所以一段时间后我会开始收到 401 响应,这会导致在上下文中的 IQueryables 调用 GetEnumerator 时引发异常(上面代码中的 ToList 调用)。我可以包装我枚举端点的每个地方,但这并不理想。我发现我可以在 DataServiceContext 的 ReceivingResponse 事件中检测到 401 并标记令牌已过期,但这并不能阻止调用失败,它只会使后续调用正常工作。

所以在这一点上,我试图找出一种处理 401 的方法,而不需要将每个调用(通常在枚举 IQueryable 时)都包装在 try/catch 中。我试图找出一种方法让 Web 请求以类似于处理基本身份验证的方式处理我的自定义身份验证(如果服务器以 401 和 WWW-Authenticate 标头响应,并且已为基本身份验证指定凭据另一个请求将使用所需的身份验证标头自动发送)但没有运气。

任何帮助/建议将不胜感激。

0 投票
3 回答
570 浏览

c# - .Net OData v4 Client Generation - IDataErrorInfo

I have created an OData v4 Client with the OData Client Generator. This generated partial classes. I would like to extend this generated classes with IDataErrorInfo.

When i like to create a new City and send it to the server

I get an error

The WebApi configuration:

Is there a possibilty to prevent the Error property being included in the request?

0 投票
0 回答
561 浏览

javascript - odata 从地址栏工作,从 javascript 失败

使用 olingo oData 库使用 oData V4 的 Javascript 应用程序。从浏览器的地址栏中输入:http://services.odata.org/v4/Northwind/Northwind.svc/Customers/ 返回 json 就好了... 这是 Fiddler 的标头 .. 请求标头

回复标题

**问题来自我使用完全相同的 uri olingo oDatajs 拨打电话的 javascript,但它在 Preflight 中失败且未实现 **

响应头

我必须假设它在请求标头中,因为失败是在返回响应到达浏览器之前。我在本地服务器上有一个 oData V4 端点,并且即使我可以从地址栏中处理相同的 URI,我也能够通过 CORS 只让它返回 404。

该请求的地址栏标题

回复

还有这个 javascript 中的失败标头... 请求

回复

正如您所看到的,Host 和 GET 在这两种情况下都是相同的,所以我不明白为什么我在 javascript 请求中得到 404。有谁比我更了解这些标题吗?

更新 我已经确定问题的后半部分(命中我的本地服务器)的问题是请求标头中的“OData-MaxVersion:4.0”。ASP.Net odata 本地服务器正在运行 oData 版本 3。一旦我将后端重新设计为 oData v4,它就可以很好地返回有效负载。我通过在提琴手中一一删除请求标头值直到它起作用来确定问题。

对我来说问题较小但仍未解决的是 Northwind oData 在预检时返回 501 这里是调用 oDatajs-4.0.0 函数的 javascript 函数

0 投票
1 回答
4251 浏览

odata - 如何更新实体及其子项?补丁方法不起作用

我必须使用其子列表更新我的实体,如下所示:

我以这种方式实现了补丁方法:

但是当我尝试以这种方式从提琴手调用它时:

它在 Model.isValid 属性中给出错误并指定返回此错误:

无法将 PATCH 应用于实体类型“Entity1”上的导航属性“ChildrenList”。

我该如何解决?补丁方法是正确使用的方法吗?

0 投票
1 回答
234 浏览

asp.net-web-api - Created(entity) 使用复合键抛出异常

我有一个MyEntity使用复合键的实体 ()。

实体被发布和插入就好了,但是当Created()被调用时它会抛出一个InvalidOperationException带有消息的。

实体集“MyEntity”的编辑链接构建器返回 null。位置标题需要编辑链接。

0 投票
1 回答
237 浏览

sql-server - 将日期序列化为 JSON 似乎会改变一小时前的日期

我试图了解为什么当我以 JSON 格式查看存储在我的 MSSQL 服务器中的日期时,它们会被更改回一小时。

这是存储在 MSSQL 中的 Datetime 日期

2015-08-12 00:00:00.000

这是 Visual Studio 中的调试模式,显示日期“似乎”可以从数据库中正确检索。

{2015 年 8 月 12 日上午 12:00:00}

这是 JSON 输出 - 日期提前一小时!我看到 json 时区是-6,而数据库时区似乎没有,但我的 web api 配置中没有任何特殊设置。我真的不明白这里发生了什么。感谢任何帮助。

"2015-08-11T23:00:00-06:00",

编辑:我的照片没有显示,所以我编辑以文本格式显示日期 - 希望没关系。

0 投票
4 回答
5348 浏览

c# - OData v4 函数始终返回 404

试图从OData v3移动到OData v4。为什么我在尝试使用OData Functions时总是收到404

Web API 配置:

C#代码:

从 $metadata 返回的 XML:

如您所见,它位于架构/OData 模型中......但以下查询不起作用:

我还尝试了以下方法:

以上所有结果都会导致404

所以......我在这里做错了什么?

0 投票
1 回答
2879 浏览

c# - 无法将类型为“Microsoft.OData.Edm.Csdl.CsdlSemantics.UnresolvedType”的对象转换为类型“Microsoft.OData.Edm.IEdmCollectionType”

在 Visual Studio 2013 中,我使用在 Nuget 中找到的 OData 客户端代码生成器使用 OData V4 端点。出乎意料的是,本周 t4 模板给出了错误:无法将类型“Microsoft.OData.Edm.Csdl.CsdlSemantics.UnresolvedType”的对象转换为类型“Microsoft.OData.Edm.IEdmCollectionType”。

我正在使用 7 个 OData 端点,其中只有一个在后端有更新,需要重新保存 *.tt 文件。保存后出现错误并将输出 *.cs 文件留空。然后,我尝试在 OData 端点保存没有模型更改的 *.tt 文件之一,以查看它的行为方式。思考的过程是,端点处模型的更改可能与客户端代码生成器不兼容。不幸的是,一个失败并产生了一个空白的 *.cs 文件以及同样的错误。

幸运的是,一切都使用 git 进行了版本控制,我能够回滚文件以保持项目运行。

把它放在这里,以防其他人升级他们的 OData 客户端代码生成器并感到沮丧。

0 投票
1 回答
534 浏览

c# - OData v4 客户端代码生成器/Microsoft.OData.Core:创建 Nullable来自不可空 int 的外键

我不确定这是最新的 Microsoft.OData.Core 的问题,还是最新的 OData v4 客户端代码生成器的更改。但是,客户端代码生成器现在正在为未设置为可空 int 的 int 字段创建可空外键。

0 投票
1 回答
8096 浏览

.net - 自定义 Odata v4 功能 - 不是有效的 odata 路由模板 - 未找到该段的资源

我有这样的想法(对自己的行动可能还可以)

WebApiConfig 中定义的操作可能是这样的:

但我不断收到以下错误(经过多次重写)

任何想法我做错了什么?我没有在网上找到很多关于 odata 和自定义功能/操作的信息,除了 msdn 上的信息。