|
|
1
5
尝试使用其完整命名空间引用messageheader。 如。
为了简洁,你可以尝试
你可以用哪个
其中messageheader来自WebServices1命名空间 |
|
|
2
0
用命名空间完全限定类名。
|
|
|
3
0
似乎您已经导入了同一个WSDL两次——或者至少两个WSDL使用的某些类型是相同的。可以消除两个相同命名类型之间的歧义,而不是同时导入两个Web引用命名空间或使用命名空间别名。 你能发布实际的代码片段并指出你使用“添加Web引用”导入的URL吗?另外,您使用的是哪个版本的Visual Studio,以及您要针对的是哪个版本的.NET Framework? 编辑——根据Peter在评论中提供的信息进行跟进 我检查了您发布的两个URL,只想提供一点背景信息。实际上,您第一次看到错误的原因是两个WSDL导入都指定了相同类型的使用,即 消息头 . 检查每个WSDL文件的顶部: http://webservices.sabre.com/wsdl/sabreXML1.0.00/usg/SessionCreateRQ.wsdl
http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirAvailLLS1.1.1RQ.wsdl
每个WSDL文件的最后一行显示了类型名冲突的原因——每个WSDL文件都导入了相同的XSD文件,显然是因为这两个文件使用相同的类型。当您创建对每个WSDL文件的Web引用时,Visual Studio将检查WSDL并生成一个与导入的 消息头-2_0.xsd 图式。 不幸的是,Visual Studio无法判断每个单独的WSDSL引用中的模式实际上是相同的类型,因此它会尽职地导入每个模式并为每个模式生成一个单独的类。尽管生成的每个类共享相同的名称,但每个类都在其自己的唯一命名空间中定义,该命名空间与每个WSDL文件相关联。 所以,这就是为什么你为你的问题接受的解决方案有效——或者指定 一 这些类型起作用或使用别名来 一 其中的类型 一 特定命名空间的。 另一种解决方案是修复两个Web引用以共享单个messageheader类型。这可以手动完成,但是,每次刷新Web服务引用时都必须重新进行手动编辑,所以我不推荐这样做。另外,使用合适的 消息头 为每个服务定义的类型,尽管它们是相同的。所以,我要创造两个 使用 别名如果假设要从同一源文件调用这两个服务:
我会将messageheader1与您在命名空间下引用的任何服务一起使用 webapplication3.com.sabre.webservices1 同样,messageheader2与另一个相同。 祝你好运! |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |