Infopath 2007和WCF数据连接

时间:2009-10-14 22:40:26

标签: wcf soap infopath

我无法尝试将Infopath 2007表单连接到WCF Web服务。我似乎Infopath只想通过SOAP 1.0消息进行通信。为了解决这个问题,我创建了一个.asmx Web服务。我是否应该考虑继续这种解决方法或找出让WCF发布SOAP 1.0 1.1消息的方法?

3 个答案:

答案 0 :(得分:4)

通过在webconfig中使用basicHttpBinding而不是wsHttpBinding,WCF可以使用InfoPath。

答案 1 :(得分:1)

只是为了帮助xanax回答这是我最终在web.config文件中做的事情。这是创建新WCF服务时生成的默认配置的一部分。我注释掉了一个端点,并添加了一个新端点,唯一的变化是从wsHttpBinding到basicHttpBinding的绑定,并且它有效。

    <system.serviceModel>
            <services>
                <service name="Service" behaviorConfiguration="ServiceBehavior">
                    <!-- Service Endpoints -->
                    <!--<endpoint address="" binding="wsHttpBinding" contract="IService">-->
                    <endpoint address="" binding="basicHttpBinding" contract="IService">
                        <identity>
                            <dns value="localhost"/>
                        </identity>
                    </endpoint>
                    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
                </service>
            </services>
...Other Config Here....
    <system.serviceModel>

答案 2 :(得分:1)

默认情况下,InfoPath仅适用于basicHttpBinding。将Webservice与InfoPath一起使用时,通常将Web服务URL放在UDX文件中。在该文件中,无法为目标服务指定绑定。您通常不会自己为您的服务创建代理,InfoPath会在场景后面为您执行该代理,并且该代理仅使用basicHttpBinding。

如果您希望InfoPath表单与使用非basicHttpBinding的WCF服务一起使用,您可以通过在 InfoPath表单代码中以编程方式自行创建代理来实现。以编程方式创建代理时,可以在代理的构造函数中指定目标WCF服务的绑定。使用以编程方式创建的代理时不存在任何限制。当然,应该已经安装了.NET 3.5,以便您的代码可以使用WCF库来创建具有正确绑定的代理。安装InfoPath时,只有.NET 2可用。

我用wsHttpBinding尝试了这个,它没有问题。通过阅读许多文章和帖子,似乎很多人认为InfoPath只能使用basicHttpBinding。这只是部分正确,因为它仅适用于您自己不创建代理的情况。