问题标签 [svcutil.exe]
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.
c# - 如何为具有共享类型的多个 WCF 服务生成客户端代码
我有多个共享一些数据协定的 WCF 服务,并且需要使用 svcutil.exe 生成客户端代码。我使用两种最明显的方法遇到了错误,需要一些帮助。
但首先,这里是服务:
Response 和 Request 在单独的程序集中定义:
这些服务以一些简单的方式实现,编译,发布 - 现在让我们切换到客户端。
在 svcutil 命令行上包括这两个服务 - 像这样:
将导致大量关于重复数据类型的错误消息,从
错误:导出期间生成的架构出现验证错误:来源:行:1 列:9087 验证错误:全局元素“ http://schemas.microsoft.com/2003/10/Serialization/:anyType ”已经被宣布。
并以
错误:导出过程中生成的架构出现验证错误:来源:行:1 列:12817 验证错误:已经声明了complexType ' http://www.me.com/shared/:Response '。
为每个服务单独生成一个客户端文件可以避免这些错误:
但是共享类型的定义(例如请求和响应)将在 Foo.cs 和 Bar.cs 中重复,显然会导致编译器错误。
那么,生成使用此类服务的客户端代码的常规方法是什么?
限制:
- 无法将包含共享类型的程序集发送到客户端(以便他们可以使用 svcutil.exe 的 /r 选项)
- 无法在 Visual Studio 中使用“添加服务引用...”命令 - 需要 svcutil 命令行(或其他命令行工具)。
c# - 在 WCF 中从 WSDL 生成代码不断返回消息与默认值不匹配
好吧,这让我发疯了。我一直在尝试从预定义的 wsdl 构建服务实现代码,并且它始终在服务合同/接口上返回一条消息:
我尝试使用 svcutil.exe 和 WSCF 的生成服务代码向导来执行此操作,并且都返回相同的结果。
下面是我正在使用的 WSDL。我在这里添加了类型,我确实将它们分解成一个单独的 xsd,只是不想同时发布两者。使用这个 wsdl(嵌入所有类型)也会产生同样的问题。
我已经查看了这篇博文(http://pzf.fremantle.org/2007/05/handlign.html),这就是我能找到的关于这个问题的全部内容。我想我已经完成了它所说的一切,但仍然有问题。
有没有其他人遇到过这个?这非常令人愤怒,也许我遗漏了一些明显的东西。任何帮助将不胜感激。
谢谢marc_s,
好的,这似乎有效。它只是响应类型中缺少的“s”。哦!
现在服务代码似乎生成正常,但是当我浏览到我的服务时,没有数据协定/xsd,也没有对 wsdl 的操作。
它看起来像:
我希望它看起来像我从中生成代码的 wsdl,不是吗?
wcf - 为什么 SvcUtil 创建一个从 IClientChannel 派生的 Channel 接口
当您使用 SvcUtil.exe 从 WSDL 文件创建代码时,所创建的许多类型中有一个从服务接口和 IClientChannel 派生的接口。
例如,如果创建的服务接口名为 IMyService,它也会创建此接口:
为什么要定义这个接口?据我所知,它没有从自动生成的代码中的任何地方引用。
.net - 从 .NET DLL 使用 webservice - app.config 问题
我正在构建一个 DLL,我们称它为mydll.dll,在其中我有时需要从 webservice myservice调用方法。mydll.dll是使用 C# 和 .NET 3.5 构建的。
为了使用mydll中的myservice,我在 Visual Studio 2008 中添加了一项服务,这与使用svcutil.exe或多或少相同。这样做会创建一个我可以创建的类,并将端点和绑定配置添加到mydll app.config。
这里的问题是mydll app.config 永远不会加载。相反,加载的是我使用mydll的程序的 app.config 或 web.config 。
我希望mydll能够发展,这就是为什么我从一开始就将它的功能与系统的其他部分分离。在那个演变过程中,它可能会添加更多它将调用的 Web 服务,从而排除手动复制粘贴方法来克服这个问题。
我研究了几种可能的方法来解决这个问题:
- 手动将端点和绑定从mydell app.config 复制到目标 EXE 或 web .config 文件。
耦合模块,不灵活 - 使用 configSource(参见此处) 在目标 .config 中包含来自mydll app.config 的端点和绑定。还要增加模块之间的耦合
- 以编程方式加载mydll app.config,读取端点和绑定,并实例化 Binding 和 EndpointAddress。
- 使用不同的工具为myservice创建本地前端
我不确定该走哪条路。选项 3 听起来很有希望,但事实证明它需要做很多工作并且可能会引入一些错误,所以它值得怀疑。除了规范的 svcutil.exe 之外,我也不熟悉任何工具。
请给出上述替代方案的利弊,提供实施其中任何一个的提示,或提出其他方法。
谢谢,
阿萨夫
c# - wsdl.exe/svcutil.exe - 有没有办法在 Web 服务或客户端生成期间不为 xsds 中的类型生成类
我们为 C# 架构中的类型提供了一个集中管理的对象模型。我们希望整个企业中的每个人都使用该对象模型,而不是在 Web 服务客户端或服务实现期间使用每次从 wsdl/svcutil 生成的对象模型。
wsdl/svcutil 是否有一个参数(任何其他方式)在执行期间不为模式类型生成类?
c# - /sharedtypes equivalent for svcutil.exe?
Building an app that is relying on a 3rd party provider who has a very verbose set of SOAP services (we're talking 50+ WSDL files). Each individual WSDL however has numerous shared type declarations. When generating client code with wsdl.exe, there used to be a /sharedtypes flag that would merge duplicate entries if a type was found several times.
When I attempt to generate my client code, I bomb on these overlapping types that the 3rd party includes in all their WSDL files.
Results in error messages alluding to the type collisions. For example, a couple samples of the error messages below:
I do not have control over the output of the WSDLs. I do not want to have to edit the WSDLs by hand for fear of an error that breaks in a fashion at runtime that would be highly difficult to track back to our editing of the WSDL files. Not to mention that there are 50 some WSDL files that range from 200-1200 lines of XML. (Remind me again why we thought SOAP was the great salvation to us all back in the late 90s?)
.net - 从 WCF 服务生成单独的“模型”类
我希望能够为 WCF Web 服务中的每个数据协定或 XML 类型生成单独的类(每个文件一个类)。
我已经阅读了svcutil文档,除非我浏览的速度太快,否则该工具似乎不支持这种行为。
我想这样做的原因很简单——我试图将服务的“模型”与服务本身隔离开来。有几个组件依赖于服务中的类型,但不关心服务级别操作的细节,例如加载/保存。我不喜欢这些组件需要依赖于包含各种调用和绑定逻辑的同一个程序集的事实。
我知道svcutil
(和 VS 集成)可以配置为在另一个程序集中使用预先存在的模型类。这是一个先有鸡还是先有蛋的问题。我真的不想手动编写 50 个(至少目前)与生成的类几乎相同的类。当然,我必须DataContract
使用命名空间和其他 WCF 属性添加所有属性……这很痛苦。
我的最终目标是真正拥有一个完全独立于服务模型的表示/域模型,但我还没有真正的周期。我认为生成一个最终可以塑造成真正的演示模型的人造模型将是开始这条道路的一种很好、快速和简单的方法。之后,我可以配置服务引用以使用单独生成的代理类,并开始充实一些更健壮的东西。
这可以做到吗?是否有选项svcutil
可以让它为每个文件生成一个类?还是有其他工具可以做到这一点?
c# - 我的 wcf 代理中的重复类
好的,我有两个 OperationContracts 和 MessageContracts,如下所示:
现在,当我将此 WCF 服务引用添加到客户端时,我看到了重复的类,它们都对应于相同的对象输入。
即在我的客户端中,我可以看到ServiceReference.Input 和另一个名为ServiceReference1.Input1 的重复类。
两者都有相似的成员,但由于类型不匹配,我无法使用 minterchangeably。
如何阻止在代理中生成重复条目。
serialization - svcutil 合成类的序列化问题
我使用svcutil生成类来访问 Web 服务。我需要序列化它们。这个类很简单,下面是它的样子
现在,问题是我不能序列化这个类。下面是序列化代码:
当我尝试序列化类时,我得到空字符串。有什么想法吗?
wcf - svcutil、WSDL 和生成的接口不足以实现
我有一个 WSDL 文件,它定义了我必须在 WCF 中实现的服务。我读到我可以使用 WSDL 文件中的 svcutil 生成代理,然后我可以使用生成的接口来实现服务。
不幸的是,我似乎无法找到一种方法让接口包含正确的属性来公开合同。
所有操作都有“OperationContractAttribute”属性,但看起来好像要公开服务,我需要每个操作都有“OperationContract”。与“ServiceContractAttribute”和“ServiceContract”相同,我想象 DataContract,但我还没有走到那一步。
我可以手动进行这些更改,但我更喜欢一种可以轻松使用现有代码的技术,或者可以为我的使用生成更好的代码。有什么方法可以做到这一点吗?
谢谢。
编辑:
使用的命令:
代码示例:
尽我所能告诉/看到 WSDL 文件是完全独立的,不需要额外的 XSD 文件。