Tag: wsdl.exe

Web服务不使用代理类处理来自同一应用程序的多个同时请求

我有一个应用程序调度多个任务,调用不同的Web服务,一些相同的Web服务,但不同的方法。 每个任务都在一个时间间隔内执行,每个任务都在自己的线程中运行。 为了获得对webservice的引用,我有一个wsdl.exe生成的代理类,它在每个任务中实例化并且总是被处理掉。 但是,在运行应用程序时,任务实际上是在服务请求中等待彼此,Web服务在从任务x完成处理请求之前没有处理来自任务y的服务请求(我可以看到这是因为来自任务x的服务调用可能需要5分钟,任务y 100毫秒,但是如果y在x运行时开始,则在x完成后100毫秒完成)。 这是来自任务的代码(在自己的线程内运行): public class TaskX : TaskWrapper { public TaskX(Guid id, string name, EventQueue eventqueue) : base(id, name, eventqueue) { } protected override void DoTask() { try { var factory = new ServiceReferenceFactory(); using (var reference = factory.GetServiceReference()) { bool result; bool isSpecified; reference.Run(out result, out isSpecified); } } } } […]

C#web-service客户端:具有相同(复杂)返回类型的多个Web服务方法?

我正在努力建立一个Java B2B Web服务的客户端,我想我已经确定了我们已经遇到的问题的原因已经有一段时间了。 不幸的是我无法发布WSDL。 显然,我的自动生成的代理代码(通过wsdl.exe:由于WCF不支持密码摘要而必须使用WSE 3.0)无法处理具有多个具有相同复杂返回类型的Web方法的Web服务的WSDL。 举例来说 – 一个定义以下方法的Web服务: Public ComplexTypeX Blah(); Public ComplexTypeX Blue(); Public ComplexTypeX Foo(); Public ComplexTypeY Bar(); 在我的Reference.cs文件中,如果我注释掉所有调用Blah(),Blue()或Foo()中的任何两个的代码,那么剩余的未注释方法可以被调用没有问题。 但是,如果我没有注释掉这三个方法中的多个(例如,Blah()和Foo()),那么在实例化 Web服务客户端代码时,我会收到以下错误消息: “方法Blah无法反映出来。” “命名空间’ http://some.url ‘中的XML元素’ComplexTypeX’引用方法和类型。使用WebMethodAttribute更改方法的消息名称,或使用XmlRootAttribute更改类型的根元素。” 现在,肯定没有将ComplexTypeX方法定义为Web服务的一部分,所以我只能假设.NET(或至少wsdl.exe)不允许您使用返回复杂的Web服务(用户定义) )跨多种方法的相同类型的类型……对吗?