SSIS没有从WSDL文件中检测输入服务或方法

时间:2014-07-14 17:15:49

标签: web-services ssis wsdl

我在本地保存了一个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服务工具仍然没有看到任何方法。

3 个答案:

答案 0 :(得分:1)

您是否正确设置了HTTP Connection?它必须类似于“ http://server.asmx?WSDL”。如果不是,请执行此操作,然后使用覆盖重新下载wsdl,然后它应该可以工作。

答案 1 :(得分:-1)

似乎缺少一些配置。您可以查看此SSIS Web Service Task Step by Step文章。如果Web服务使用证书,则需要将其安装到您的计算机上。

答案 2 :(得分:-1)

我无法使用任何GUI解决方案,因此我最终编写了一个自定义脚本任务来解决它。