【发布时间】:2014-07-14 17:15:49
【问题描述】:
我有一个本地保存的 WSDL 文件(首先从开发人员工具包中下载,它指示将其保存在本地,而不是从公共 URL 下载),我正在尝试在 SSIS 的 Web 服务任务中使用它。我指向 Web 服务任务编辑器(常规选项卡)中的本地文件。 HTTP 连接指向一个已在 HTTP 连接管理器中成功测试连接的 URL。
但是,用于选择服务和方法的输入选项卡下拉菜单是空白的。我没有收到关于 WSDL 文件本身的任何错误。它看起来格式正确且有效。我不确定为什么 SSIS 没有从 WSDL 文档中检测到服务和方法。
我尝试在本地从http://graphical.weather.gov 保存一个不同的 WSDL 文档,它在不同的 Web 服务任务中工作。我猜 WSDL 的结构有问题。它是通过帐户凭据访问的,因此很遗憾,我认为我不能将其粘贴到此处。不过,这对我来说看起来还不错。
有什么建议可以尝试吗?谢谢。
更新:我之前没有按“下载 WSDL”按钮,认为这仅适用于来自 Web URL 的 WSDL 文档。单击它时,我收到一条消息,表明 WSDL 已成功下载。然后,在单击“输入”选项卡时,我收到这条模糊的错误消息:
无法读取 Web 服务描述语言 (WSDL) 文件。输入 WSDL 文件无效。读取文件时出现以下错误。 XML 文档中存在错误 (1, 2)..
我尝试在 XML 复制编辑器中进行验证,它给了我这个:
第 4 行第 468 列出错:找不到元素“wsdl:definitions”的声明
再一次,我觉得它很好,但我粘贴了下面的 WSDL 代码,并编辑了所有者的信息:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="Service" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:error="http://www.[redacted].com/error" xmlns:co="http://www.[redacted].com/co" xmlns:srv="http://www.[redacted].com/srv" xmlns:tns="http://www.[redacted].com/tns" targetNamespace="http://www.[redacted].com/tns">
<wsdl:types>
<xsd:schema>
<xsd:import namespace="http://www.[redacted].com/XMLSchema/1" schemaLocation="1.xsd"/>
<xsd:import namespace="http://www.[redacted].com/XMLSchema/2" schemaLocation="2.xsd"/>
<xsd:import namespace="http://www.[redacted].com/XMLSchema/3" schemaLocation="3.xsd"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="ServiceRequestMessage">
<wsdl:part name="Body" element="srv:ServiceRequest"/>
<wsdl:part name="security" element="co:security"/>
</wsdl:message>
<wsdl:message name="ServiceResponseMessage">
<wsdl:part name="Body" element="srv:ServiceResponse"/>
</wsdl:message>
<wsdl:message name="ServiceErrorMessage">
<wsdl:part name="ServiceError" element="error:Errors"/>
</wsdl:message>
<wsdl:portType name="ServicePortType">
<wsdl:operation name="ProcessService">
<wsdl:input name="ServiceRequest" message="tns:ServiceRequestMessage"/>
<wsdl:output name="ServiceResponse" message="tns:ServiceResponseMessage"/>
<wsdl:fault name="ServiceError" message="tns:ServiceErrorMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ServiceBinding" type="tns:ServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="ProcessService">
<soap:operation soapAction="http://soap.[redacted].com/binding" style="document"/>
<wsdl:input name="ServiceRequest">
<soap:body parts="Body" use="literal"/>
<soap:header message="tns:ServiceRequestMessage" part="security" use="literal">
<soap:headerfault message="tns:ServiceErrorMessage" part="ServiceError" use="literal"/>
</soap:header>
</wsdl:input>
<wsdl:output name="ServiceResponse">
<soap:body parts="Body" use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceError">
<soap:fault name="ServiceError" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ServiceService">
<wsdl:port name="ServicePort" binding="tns:ServiceBinding">
<soap:address location="https://ws.[redacted].com/service"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
更新 2: 我想我已经将问题追溯到 WSDL 引用的 XSD 文件之一使用组标记这一事实。删除任何组标签(并将其子元素移动到引用它们的 complexType)至少允许 BlueSSIS 插件查看 Web 服务方法,但尝试选择它会导致 BlueSSIS 插件崩溃。内置的网络服务工具仍然看不到任何方法。
【问题讨论】:
标签: web-services ssis wsdl