在InfoPath中使用WCF时键入不匹配

时间:2014-09-16 07:41:03

标签: c# wcf types wsdl infopath

我正在尝试在InfoPath2007中使用自己的WCF服务。当我添加数据源时,使用wsdl文件效果很好,它会正确显示所有操作/方法,但当我尝试选择我想要的时,我会得到以下错误:

  

InfoPath遇到错误。操作失败。类型   不匹配。

我在web.config中的system.serviceModel看起来如下:

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="basicBehaviour">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="basicBehaviour" name="whoami.Service">
        <endpoint address="whoAmI" binding="basicHttpBinding" contract="whoami.ISoapService">    </endpoint>
      </service>
    </services>
    <protocolMapping>
      <add binding="basicHttpBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

这就是我的界面的样子

[ServiceContract(Namespace = "http://localhost:51703/Service.svc", Name = "whoami")]
public interface ISoapService
{
    [OperationContract(Name="whoAmI")]
    DataSet whoAmI();
}

这就是我实现界面的方式

[ServiceBehavior(Namespace="http://localhost:51703/Service.svc")]
// replace the above with the following to get it working
//[ServiceBehavior]
public class Service : ISoapService
{

    public System.Data.DataSet whoAmI()
    {
        //create DataTable to look like the xml structure
        DataTable myTable = new DataTable("data");
        myTable.Columns.Add("name");
        myTable.Columns.Add("mail");
        myTable.Rows.Add("Example, Phil", "example.phil@mycompany.com");

        //create DataSet and store table in it
        DataSet myDataSet = new DataSet("whoami");
        myDataSet.Tables.Add(myTable);

        return myDataSet;
    }
}

我发现如果我使用

  

[ServiceBehavior]

而不是

  

[ServiceBehavior(命名空间= “HTTP://本地主机:51703 / Service.svc”)]

有时会显示错误,但无论如何我都可以继续。问题是,然后将wsdl中的targetNamespace设置为“Tempuri.org”。 我还尝试过的是端点的不同绑定,如

  • 的WebHttpBinding
  • 的wsHttpBinding

但我得到同样的错误。

我希望有人可以提供帮助。

喝彩!

菲尔

0 个答案:

没有答案