我在本地保存了一个WSDL文件(首先从开发人员工具包下载,指示在本地保存它而不是从公共URL下载),我试图在Web服务任务中使用它SSIS。我指向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 Copy Editor中验证,它给了我:
第4行第468行出错:未找到元素&w; ds:定义'
的声明
同样,它对我来说很好,但是我在下面用所有者的信息编辑粘贴了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服务工具仍然没有看到任何方法。
答案 0 :(得分:1)
您是否正确设置了HTTP Connection
?它必须类似于“ http://server.asmx?WSDL”。如果不是,请执行此操作,然后使用覆盖重新下载wsdl
,然后它应该可以工作。
答案 1 :(得分:-1)
似乎缺少一些配置。您可以查看此SSIS Web Service Task Step by Step文章。如果Web服务使用证书,则需要将其安装到您的计算机上。
答案 2 :(得分:-1)
我无法使用任何GUI解决方案,因此我最终编写了一个自定义脚本任务来解决它。