Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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
C# 在C中引用多个Web服务时解决类型歧义#_C#_.net_Web Services - Fatal编程技术网

C# 在C中引用多个Web服务时解决类型歧义#

C# 在C中引用多个Web服务时解决类型歧义#,c#,.net,web-services,C#,.net,Web Services,我目前正在开发一个基于c#的Web应用程序,它调用一些Web服务。我已将三个不同的WSDL从提供程序导入到我的WebApplication3项目中(参考->添加web参考)。在类查看器中,它们显示为: WebApplication3.com.provider.webservices1 WebApplication3.com.provider.webservices2 WebApplication3.属性 显然,第一个和第二个WSDL有重复的函数(这是正确的名称吗?) 如果我在Default

我目前正在开发一个基于c#的Web应用程序,它调用一些Web服务。我已将三个不同的WSDL从提供程序导入到我的WebApplication3项目中(参考->添加web参考)。在类查看器中,它们显示为:

WebApplication3.com.provider.webservices1
WebApplication3.com.provider.webservices2
WebApplication3.属性

显然,第一个和第二个WSDL有重复的函数(这是正确的名称吗?)
如果我在Default.aspx.cs中添加以下内容,请使用:

使用WebApplication3.com.sabre.webservices1
使用WebApplication3.com.sabre.webservices2
使用WebApplication3.Properties


然后尝试使用:

MessageHeader msgHeader=新建MessageHeader()
在我的WebApplication3命名空间中,我得到了错误

“WebApplication3.com.provider.webservices1和 WebApplication3.com.provider.webservices2“

我猜这是因为它是在两个WSDL中声明的?我如何修复它,以便使用它


谢谢,如果这个问题很愚蠢,我也很抱歉

似乎您已经导入了相同的WSDL两次——或者至少两个WSDL使用的某些类型是相同的。您可以通过不同时导入两个web引用名称空间或使用名称空间别名来消除两个相同命名类型之间的歧义

您是否可以发布实际的代码片段,并指出您使用“添加Web引用”导入的URL?另外,您使用的是什么版本的Visual Studio?您的目标是什么版本的.Net Framework

编辑——根据Peter在评论中提供的信息进行跟进

我检查了你发布的两个URL,只是想提供一些背景信息。实际上,您第一次看到错误的原因是两个WSDL导入都指定使用相同的类型,即MessageHeader。检查每个WSDL文件的顶部:

我会将MessageHeader1用于您在名称空间WebApplication3.com.sabre.webservices1下引用的任何服务,同样地,将MessageHeader2用于其他服务


祝你好运

尝试使用MessageHeader的完整命名空间引用它。 例如

为了简洁起见,你可以试试

using MessageHeader = WebApplication3.com.provider.webservices1.MessageHeader
哪一个可以让你使用

MessageHeader msgHeader = new MessageHeader() 

其中MessageHeader来自webservices1命名空间

使用命名空间完全限定类名

WebApplication3.com.sabre.webservices1.MessageHeader msgHeader = new WebApplication3.com.sabre.webservices1.MessageHeader();

下面的方法有效吗?webservices1.MessageHeader msgHeader=新的webservices1.MessageHeader();否-获取错误找不到WebServices1是否正确遍历类层次结构?您可能会错过额外的WebApplication3.com.provider.webservices1。[您的课程在这里]我将使用visual Web Developer Express 2008瞄准.NET 3.5(如果可行,计划购买studio!)近六年后,这解决了我的问题。添加注释以在搜索中对此进行冒泡。
WebApplication3.com.provider.webservices1.MessageHeader msgHeader = new 
WebApplication3.com.provider.webservices1.MessageHeader()
using MessageHeader = WebApplication3.com.provider.webservices1.MessageHeader
MessageHeader msgHeader = new MessageHeader() 
WebApplication3.com.sabre.webservices1.MessageHeader msgHeader = new WebApplication3.com.sabre.webservices1.MessageHeader();