问题标签 [servicecontract]
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.
wcf - System.Exception.Data will not serialise on DataContract?
I have some WCF services using dataContracts and i wanted to I was hoping to pass a Exception with custom Dictionary< string , object > data in the Data property, but when i add any data on this array before throwing i get the following error in the ErrorHandler of my custom ServiceBehavior:
with data contract name 'ArrayOfKeyValueOfanyTypeanyType:http://schemas.microsoft.com/2003/10/Serialization/Arrays' is not expected. Add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
Do i invariably need to create a custom exception with a Dictionary property annotated as a DataContract and throw that? the idea of using the ErrorHandler is avoiding to handle exceptions in each service method, do i still need to add further annotations to the methods? what i am missing?
for reference, this is my FaultErrorHandler class:
my typical service interface looks like:
wcf - 为另一个类 WCF 实现服务合同基类的类
我有一个实现服务合同的类。从这个类派生的另一个类又实现了另一个服务契约
如何公开合约 IB 的端点?
我尝试的端点:
如果我这样做,它会给出错误
服务“B”实现了多种 ServiceContract 类型,并且在配置文件中没有定义端点。WebServiceHost 可以设置默认端点,但前提是服务仅实现单个 ServiceContract。要么将服务更改为仅实现单个 ServiceContract,要么在配置文件中明确定义服务的端点。
提前致谢。
编辑
配置上面有错字。
我为此使用的模板是 WCF Rest 模板 4.0(如果有什么不同的话)
c# - 以编程方式发现 ServiceHost 的服务类型
天,
我试过搜索 MSDN 和这里,但我认为我不能这样做:
给定对 a 的引用ServiceHost
,是否可以发现它正在执行的主机的类型?
就像是
MagicCallHere 存在吗?
如果你能躲避反射,加分...
wcf - WCF ServiceContract 命名空间更新
我有以下 WCF 接口:
我改成了这个:
目标 XML 命名空间已从默认 tempuri.org 更改为 user.com
这会中断现有客户端的调用,因为 wsdl 不同。
有没有办法在配置文件中指定这个命名空间?这将帮助我保留现有客户端的旧名称空间并能够升级 WS。
wcf - 如何生成所有数据合同类
我已经用 WCF 建立了聊天服务。我有标记为 datacontract 属性的类
我的服务合同如下
当我尝试从 VisualStudio 2010 生成客户端代码时,没有生成类 Message。但是当我将服务合同上的方法“Whisper”中的参数“消息”类型更改为消息而不是字符串时,它会生成。
我将参数消息的类型更改为“消息”而不是“字符串”:
我有需要 Message 类才能正常工作的回调类。
问题是为什么标记为 datacontract 属性的类不包含在服务合同的方法参数或返回值中时不会生成。
c# - 仅为 WCF 服务上可用的服务合同接口之一生成客户端
我目前正在重构一个大型 WCF 服务,该服务由多个不同客户端应用程序使用的一个服务合同接口(从这里开始为“SCI”)组成。我已经拆分了 SCI,因此对于每种类型的客户端应用程序,都有一个特定于其所需操作的 SCI。SCI 的一些共享部分在基础 SCI 中定义,客户端应用程序特定的 SCI 继承该基础 SCI。
有一个服务类可以实现所有客户端特定的 SCI。共享基础 SCI 存在菱形接口继承情况这一事实有时意味着同一操作可通过多个 SCI 获得。当自动生成客户端(尤其是使用异步客户端方法)时,生成的代码有很多丑陋的<generated-type>1,2,3
等等......
为了避免这种情况,我想为每个客户端应用程序添加一个服务引用,它只为与该特定应用程序相关的 SCI 生成一个客户端。由于相同的功能出现在不同的 SCI 上,这应该不会导致任何问题。
这可能吗?
在这种情况下实现模块化和代码重用的任何其他技巧也将不胜感激。
wcf - 为什么 WCF 服务使用接口作为服务契约而不是抽象类?
这是我在一次采访中被问到的一个问题。
创建 WCF 服务时,您会得到两个文件;“IService.cs”和“Service.cs”。为什么它是实现接口的类而不是继承抽象类的类。不要回复说您不能将 [servicecontract] 属性放在抽象类上。我知道您只能将其应用于接口,但为什么呢?
wcf - WCF - 合同版本控制(通过示例)
对于熟悉版本控制服务/数据合同的最佳实践的人来说,这应该很容易。我想确保以正确的方式使用此版本控制。
所以,假设我们有一个服务合同:
和数据合同:
如果我真的需要将后者更改为其他内容:(以下仅为示例)
...那么我应该如何从服务中使用 DTOCustomer2 而不是 DTOCustomer1 以便新旧客户端兼容?在这种情况下推荐什么?我的服务合同会改变吗?AFAIK 我不需要更改服务合同。服务合同会是什么样子?我需要一个新的端点吗?我是否需要使用新数据合约的新运营合约?
EDIT1: 简单地改变
bool AddCustomer(DTOCustomer1 客户);
进入
bool AddCustomer(DTOCustomer2 客户);
会做?
EDIT2: EDIT1 的答案是No,因为 DTOCustomer2 具有不同的命名空间,但如果它具有相同的命名空间,它可能会起作用。我仍然不知道这里最好的事情是什么,并希望有人能提出一个好的答案。
先感谢您!
wcf - 获取由服务实现的 WCF 合同
作为客户端是否有可能获得 WCF 主机公开的合同列表?
我想查询一个服务并询问它实现了哪些接口。
wcf - 在 ServiceModel 客户端配置部分中找不到名称为 ' 和合同 'I' 的端点元素。
我正在研究 Base WCF Service-Client WCF service-Consumer Base Wcf servcie 模型,如下所示:
在这个模型中,我创建了一个 Base WCF 服务并创建了 1 个 WCF 服务,即;ClientWCFService 和 1 个 ASMX 服务,即;ClientASMXservice 使用 BaseWCFServiceProxy.cs,Base WCF Service 的 Proxy 类使用 SVCUtil.exe。
ClientWCFService 和 ClientASMXservice 在 StandAlone 环境中运行良好。现在,我使用相同的代理类 BaseWCFServiceProxy.cs 创建了一个使用者控制台应用程序,以使用 BaseWcfService 类访问 ClientWCFService 和 ClientASMXservice。
根据OOP 规则,BaseWcfService 类是 ClientWCFService 和 ClientASMXservice 的基类,我可以使用 Base 服务类构造函数访问这些服务。
服务调用如下:对于 ClientWCFService
对于 ClientASMX 服务
消费者控制台应用程序构建良好,但在运行时初始化 ModelWCFServiceContractClient 对象时,它抛出InvalidOperation 异常为:
在 ServiceModel 客户端配置部分中找不到名称为“IModelWcfServiceContract”和合同“IModelWcfServiceContract”的端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。
我尝试为每种类型的服务使用不同的端点来解决此问题,但未能成功。
更快的响应将不胜感激。另外请不要仅仅通过清除拼写错误来帮助我,因为这会浪费我的时间来阅读由于清除拼写错误而产生的警报。时间对我来说很关键。。
谢谢