Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从WSDL文件反向工程web服务接口的最佳方法?_.net_Web Services_Wsdl_Reverse Engineering - Fatal编程技术网

.net 从WSDL文件反向工程web服务接口的最佳方法?

.net 从WSDL文件反向工程web服务接口的最佳方法?,.net,web-services,wsdl,reverse-engineering,.net,Web Services,Wsdl,Reverse Engineering,我在一个系统上继承了一个web服务的WSDL文件,而我无法访问该文件进行开发和测试 我需要生成一个遵循WSDL的web服务。包装器是.NET,但是如果有一种简单的方法可以在另一个平台上实现这一点,我们也许可以看看它。生产web服务是基于Java的 做这件事最好的方法是什么 注意:继承的wsdl似乎与wsdl.exe不兼容,因为它不符合WS-I基本概要v1.1。 特别是,传递它的小组提到它使用了微软工具不支持的另一个标准,但他们没有澄清。该错误与所需的“名称”字段有关: Error: Elemen

我在一个系统上继承了一个web服务的WSDL文件,而我无法访问该文件进行开发和测试

我需要生成一个遵循WSDL的web服务。包装器是.NET,但是如果有一种简单的方法可以在另一个平台上实现这一点,我们也许可以看看它。生产web服务是基于Java的

做这件事最好的方法是什么

注意:继承的wsdl似乎与wsdl.exe不兼容,因为它不符合WS-I基本概要v1.1。 特别是,传递它的小组提到它使用了微软工具不支持的另一个标准,但他们没有澄清。该错误与所需的“名称”字段有关:

Error: Element Reference '{namespace}/:viewDocumentResponse' declared in schema type '' from namespace '' - the required attribute 'name' is missing 错误:中声明了元素引用“{namespace}/:viewDocumentResponse” 命名空间“”中的架构类型“” -缺少必需的属性“name” 为了清楚起见,我知道我可以很容易地从WSDL文件创建.NET包装器类,但这不是我所需要的。是这样的:

更新:原始web服务是使用Axis创建的

使用
/serverInterface
选项,您可能会发现.NET非常有用。根据文件:

为服务器端生成接口 ASP.NET Web应用程序的实现 服务将为生成一个接口 WSDL文档中的每个绑定。 WSDL单独实现了WSDL 契约(实现 接口不应包括以下任何一项: 关于类方法,请执行以下操作: Web服务属性或 更改的序列化属性 WSDL契约)。缩写为 “/si”


尝试使用and模拟包装器接口。

不确定这是否有帮助

我最近做的是:

  • 使用wsdl工具或visual studio生成.cs文件
  • 我把它改成了部分课程
  • 我创建了另一个分部类,它所做的只是添加一行代码,表示该类实现了IWhatEver
  • 我创建了一个与生成的代理类相同的接口(因此代理完全实现了该接口)
然后,在我的例子中,我使用了模拟框架(Moq)来模拟web服务,然后我使用了穷人依赖性注入(将模拟传递到被测试类的构造函数中)。。它可以处理IWhatever的一个实例

试验

希望这能有所帮助

我们正在使用Thinktecture的工具进行web服务开发,首先创建XSD模式,然后使用此工具生成服务接口。从WSDL生成服务接口可能很有用,但我自己还没有尝试过。

是-您可以使用WSCF(如上所述)生成服务器端代码。然后可以覆盖实际URL,以指向您要使用的测试URL

但是,这只会生成一个存根。您仍然需要编写实际的方法,例如GetCustomers()方法,这有点可疑,因为您不知道实际的实现是如何工作的


然后,您可以模拟它或创建一个简单的ASP web服务器来运行它。

这很有帮助。尽管继承的wsdl似乎与它不兼容,因为它不符合WS-I Basic Profile v1.1。如果您只收到警告并生成了代码,可能您可以毫无问题地使用它。除非Wsdl中存在不兼容的内容,否则Wsdl.exe始终尝试生成基本配置文件兼容代码。此外,如果您从visual studio构建ws-client代理,您可能会收到类似的警告。您可以使用wsdl.exe创建客户端代理,并将其与项目中的代理进行比较;没有生成代码:(我将在问题中添加更多信息。这是否处理web服务的生成?我似乎找不到现成的信息,表面上看也不适用。我的意思是“模拟”在一般意义上,但它可能仍然适用?我尝试了wsdl.exe,但它与继承的wsdl不兼容,因为它不符合标准。:(在那之后,我不确定我是否需要模拟框架;我不能只更改代理类URL设置吗?这很巧妙。不起作用,但我可以将其用于其他事情!)(应该澄清它确实符合我的目的,但我仍然在处理一个坏掉的WSDL,我认为它只能在生成它的原始应用程序(Axis)上工作。下一步尝试)接受,因为我认为这将是最好的方式,除了在我的边缘案例中,它使用了一个混乱的WSDL。我很高兴它对您有所帮助。;-)