问题标签 [wcf-data-services-client]

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 投票
1 回答
91 浏览

c# - WCF。如何将自定义 DataContact 类型添加到 WCF 客户端参考?

我有一个带有方法的 WCF 服务:

在引用的类库项目中,我有 2 个类:

和继承类:

当我在客户端添加服务参考时,我只能看到RequestBase类。是否可以将所有继承的类添加RequestBase到服务引用中并在客户端初始化它们?

或者我必须TestCustomRequest为每个可能的传入参数类型重载方法?

谢谢

0 投票
1 回答
556 浏览

entity-framework - 如何在 WCF 数据服务中部分更新实体

我正在寻找如何通过 WCF Data Services 5.5 更新实体的一部分,只需更新整个实体的几个字段。

我找到了几种方法。

  1. 我可以使用context.AttachTo(...);和 更新整个实体,context.UpdateObject(tp);但所有实体的字段都将被更新。我只想更新一些字段。

  2. 添加一些逻辑RequestPipeline并删除不应更新的字段,如以下博客所述:http: //blogs.msdn.com/b/astoriateam/archive/2013/07/26/using-the-new-client-钩子在 wcf 数据服务client.aspx

  3. 手动创建请求。

还有其他方法可以做到这一点吗?有没有办法配置System.Data.Services.Client.DataServiceContext打开部分更新?

0 投票
1 回答
318 浏览

c# - 格式错误的请求(WCF 数据服务)

我将 WCF 数据服务用于 CRUD 操作。我有一项远程服务和许多客户端(计算机)。一些客户端在所有编辑操作中都收到错误(上下文有实体,我们现在对其进行编辑)。返回的异常包含下一条消息:“您的浏览器发送了一个使用未知方法 (MERGE) 的请求”。所有客户端都使用带有 Framework 4.5 的 Windows 7。这可能是什么原因?

服务有一个初始化方法:

UPD1:发现当客户端应用程序在管理员帐户下运行时错误消失(即管理员可以编辑实体而不会出错)。可能是 ClickOnce 部署中的问题。

UPD2:使用代理服务器的原因。研究继续……

0 投票
0 回答
223 浏览

c# - WCF 数据服务客户端:如何根据提供的 T 泛型类型和 Func 选择匹配实体?

我正在使用 WCF 数据服务/Odata 客户端库,如果我以http://services.odata.org/Northwind/Northwind.svc/上的 Northwind 示例 OData 存储为目标,使用以下说明我可以检索产品数量大于 50:

我的问题是,假设我想要一个必须执行此操作的通用类,而不是硬编码要检索的实体(在这种情况下为产品)和同一实体的条件(UnitsInStock > 50),我想提供实体对象/名称和作为 Func 的条件。我想要的是有类似下面的类,其中虚构的GetEntityType函数将从提供的 T 中推断出实体,但不幸的是 GetEntityType 不存在,我还没有找到如何完成相同的任务:

更新:

我找到了 CreateQuery 方法,可以按如下方式使用:

但是...
1. 我找不到获取与数据类型关联的字符串实体名称的方法。有没有办法从 T 以编程方式获取它?
2. URI 生成器在使用函数过滤实体时似乎有困难,所以我必须进一步研究替代方案。欢迎提出建议

更新 2: 可以使用反射检索实体字符串名称:

如果还有其他更推荐的方法,请分享。

我仍在寻找一种方法来动态地提供从服务中检索实体的条件。

0 投票
0 回答
423 浏览

c# - 使用 PUT 批量更新 - wcf 数据服务/odata

我有一个使用 PUT 更新数据的 java odata 服务。客户端在 dotnet 中。

我有一个对象(订单),它有一个属性“列表对象”(订单详情)。

是否可以使用以下命令在一个简短的订单对象中发送订单详细信息列表

运行此代码时,只有最后一个订单详细信息会提交到服务器。我已经验证了使用 fidller

如果您有任何替代方案,请提出建议。

0 投票
1 回答
599 浏览

c# - 为 Windows 应用商店应用安装 WCF 数据服务客户端时出错

我正在使用 Windows 应用商店应用程序。我有 WCF 数据服务的后端。当我尝试添加服务时出现错误,提示我需要安装 WCF 数据服务客户端并将链接放入 http://msdn.microsoft.com/en-us/jj658961

下载后,当我尝试安装它时,出现错误:0x800b0101 - 在验证当前系统时钟或签名文件中的时间戳时,所需的证书不在其有效期内。

我提供了带有错误的日志部分:

[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify certificate chain policy status.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to get certificate chain for authenticode certificate.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify signature of payload: wcf_dataservices
[2EBC:16AC][2013-10-11T11:52:07]: Failed to verify payload: wcf_dataservices at path: D:\ProgramData\Package Cache.unverified\wcf_dataservices, error: 0x800b0101. Deleting file.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to cache payload: wcf_dataservices
[2094:1F08][2013-10-11T11:52:07]: Failed to cache payload: wcf_dataservices from working path: D:\Users\TMACON~1.BAL\AppData\Local\Temp{1dff3448-2deb-42be-a710-36bfc79c5d5c}\wcf_dataservices, error: 0x800b0101.
[2094:1F08][2013-10-11T11:52:07]: Application requested retry of payload: wcf_dataservices, encountered error: 0x800b0101. Retrying...
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify certificate chain policy status.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to get certificate chain for authenticode certificate.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify signature of payload: wcf_dataservices
[2EBC:16AC][2013-10-11T11:52:07]: Failed to verify payload: wcf_dataservices at path: D:\ProgramData\Package Cache.unverified\wcf_dataservices, error: 0x800b0101. Deleting file.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to cache payload: wcf_dataservices
[2094:1F08][2013-10-11T11:52:07]: Failed to cache payload: wcf_dataservices from working path: D:\Users\TMACON~1.BAL\AppData\Local\Temp{1dff3448-2deb-42be-a710-36bfc79c5d5c}\wcf_dataservices, error: 0x800b0101.
[2094:1F08][2013-10-11T11:52:07]: Application requested retry of payload: wcf_dataservices, encountered error: 0x800b0101. Retrying...
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify certificate chain policy status.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to get certificate chain for authenticode certificate.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to verify signature of payload: wcf_dataservices
[2EBC:16AC][2013-10-11T11:52:07]: Failed to verify payload: wcf_dataservices at path: D:\ProgramData\Package Cache.unverified\wcf_dataservices, error: 0x800b0101. Deleting file.
[2EBC:16AC][2013-10-11T11:52:07]: Error 0x800b0101: Failed to cache payload: wcf_dataservices
[2094:1F08][2013-10-11T11:52:07]: Failed to cache payload: wcf_dataservices from working path: D:\Users\TMACON~1.BAL\AppData\Local\Temp{1dff3448-2deb-42be-a710-36bfc79c5d5c}\wcf_dataservices, error: 0x800b0101.
[2094:0708][2013-10-11T11:52:07]: Error 0x800b0101: Failed while caching, aborting execution.

有人可以解释一下,需要什么证书,我该如何解决这个错误的问题?

谢谢。

0 投票
2 回答
858 浏览

c# - DataServiceContext.SaveChanges() 是否有任何事件或挂钩

WCF 数据服务客户端中没有内置的属性级别更改跟踪器,因此我创建了自己的属性更改跟踪器。

在调用者调用后DataServiceContext.SaveChanges(),我想清除我跟踪的修改属性集合。 我没有看到任何让我知道何时调用 SaveChanges() 的事件或挂钩。与使用派生的 DataServiceContext 隐藏底层 SaveChanges() 相比,是否有任何我遗漏的事件或钩子可以让我更干净地执行此操作?

0 投票
0 回答
1076 浏览

c# - 如何解决 WCF 数据服务客户端中的“类型 'full.name' 没有可设置的属性”?

我正在使用带有自定义实体类的 WCF Data Services 5.6,并成功地将数据读入从Catel 的 ModelBase继承的实体中。但是,当我尝试执行插入或更新时,数据服务使用的反射在 ModelBase 的只读属性之一“ValidationContext”上失败,该属性实现了一个没有设置器的接口。ValidationContext 具有在 Catel 中定义的 [XmlIgnore] 和 [Browsable(false)] 属性。

我尝试删除Configurations.RequestPipeline.OnEntryStarting 和 OnEntryEnding 钩子中的属性,也尝试通过在 WritingEntry 事件中编辑 xml的(旧学校)方法。但是在任何这些事件被触发之前就会出现以下异常。

因此,看起来数据服务客户端在尝试序列化之前正在反映类型,并在那里吐出错误,因为它无法将 IValidationContext 解释为模型中的有效实体类型。

我成功测试的一种解决方法是用非公共版本有效地替换公共 ModelBase 属性:

但这显然是不可接受的,因为那样我就不能在其他地方使用 ValidationContext 了。

我相信如果您要在任何实体的对应部分类代码中添加类似这样的任何属性,那么通过“添加服务引用”生成的代理也会出现问题。

有什么建议吗?我们可以替换/覆盖任何相关的序列化器方法吗?


“Catel.Data.IValidationContext”类型没有可设置的属性。来源: Microsoft.Data.Services.Client at System.Data.Services.Client.ClientEdmModel.GetOrCreateEdmType(Type type) at System.Data.Services.Client.Metadata.ClientTypeUtil.TypeIsEntity(Type t, ClientEdmModel model) at System.Data .Services.Client.ODataPropertyConverter.TryConvertPropertyValue(ClientPropertyAnnotation 属性,对象 propertyValue,HashSet1 visitedComplexTypeObjects, ODataValue& odataValue) at System.Data.Services.Client.ODataPropertyConverter.PopulateProperties(Object resource, String serverTypeName, IEnumerableSystem.Data.Services.Client.BaseSaveResult.CreateRequestData(EntityDescriptor entityDescriptor, ODataRequestMessageWrapper requestMessage) 处 System.Data.Services.Client.BaseSaveResult.CreateRequestData(EntityDescriptor entityDescriptor, ODataRequestMessageWrapper requestMessage) 处的 1 个属性) .Services.Client.BaseSaveResult.CreateChangeData(Int32 index, ODataRequestMessageWrapper requestMessage) 在 System.Data.Services.Client.BatchSaveResult.BatchRequest()在 System.Data.Services.Client.BatchSaveResult.BatchRequest()
在 System.Data.Services.Client.BatchSaveResult.GenerateBatchRequest() 在 System.Data.Services。 System.Data.Services.Client.DataServiceContext.SaveChanges() 处的 Client.DataServiceContext.SaveChanges(SaveChangesOptions 选项)

0 投票
1 回答
290 浏览

c# - WCF 数据服务 SaveChanges 未触发 WritingEntity 事件

我正在使用 WCF 数据服务(现在为 5.6),并且由于不支持枚举(以及出于其他原因),我有一些附加属性添加到客户端类中,我打算在 SaveChanges 期间使用 WritingEntity 事件按照http中的示例删除这些属性://blogs.msdn.com/b/phaniraj/archive/2008/12/11/customizing-serialization-of-entities-in-the-ado-net-data-services-client-library.aspx

我的构造函数附加了该事件,但我发现有时事件会触发,而其他时候(更常见)则不会。

保存更改

SendingRequest2 事件确实会触发,我使用它来将一些标头信息附加到请求中以支持多个数据

有谁知道在什么情况下不会触发 WritingEntity 事件?

是否有另一种方法可以防止部分类的扩展属性被序列化?

谢谢

0 投票
1 回答
329 浏览

.net - 数据服务客户端异步加载 DataGridView

我有一个正在开发的 Web API Odata 服务。控制器支持异步,但我似乎找不到任何关于如何在从 OData 服务中提取数据时加载 DataGridView 异步的好示例。我确实找到了这个链接,其中有一些内容,但我不知道如何完成其​​余部分,因为我目前必须将 DataServiceQuery 转换为列表或 DataSource 失败。 http://msdn.microsoft.com/en-us/library/dd756367(v=vs.110).aspx
我的代码是这样的。

我可以阅读/编码 C# 或 VB,所以如果你有任何一个例子,我都会听……