无法在WCF ServiceModel客户端配置部分中找到元素


[ServiceContract]
public interface IService1
{
   [OperationContract]
   DataTable GetADUserList(string strUserName, string strFirstName, string strLastName, string strEmail, string domain);
}

我在IIS中拥有一项WCF服务,上面有示例服务合同。服务web.config文件设置如下。

完整的wcf web.config文件

 <?xml version="1.0"?>
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior>
                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="false"/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <bindings>
            <customBinding>
                <binding name="notSecureBinding">
                    <binaryMessageEncoding />
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
                <binding name="SecureBinding">
                     <binaryMessageEncoding />
                    <httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint address="http://ServerName.myDomain.org/ADSearcher/Service1.svc"
                      binding="customBinding"
                      bindingConfiguration="notSecureBinding"
                      contract="ADSearcher.IService1"
                      name="notSecureBinding" />
            <endpoint address="http://ServerName.myDomain.org/ADSearcher/Service1.svc"
                      binding="customBinding"
                      bindingConfiguration="SecureBinding"
                      contract="ADSearcher.IService1"
                      name="SecureBinding" />
        </client>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

,我正在尝试以下面的方式编程访问服务。

  EndpointAddress endpointAddress = new EndpointAddress("http://ServerName.myDomain.org/ADSearcher/Service1.svc");
  IService1 ADUser = new ChannelFactory<IService1>("notSecureBinding", endpointAddress).CreateChannel();

上面的代码将错误置于下方

下方

在ServiceModel Client Configuration部分中找不到带有名称" NotSecureBinding"和Contract'AdSearcher.iservice1'的端点元素。这可能是因为没有为您的应用程序找到配置文件,或者是因为在客户端元素

中找不到匹配此名称的端点元素

我似乎无法弄清楚我在这里做错了什么,或者有更好的替代方法可以编程访问此服务?

在您的端点中,您指定了Data.GetData类型的合同。合同是IService1类型,默认情况下,合同名称应为服务接口的打字名称。

如果您真的希望将IService称为Data.GetData,则可以通过ServiceContractAttribute指定识别名称:

[ServiceContract(ConfigurationName = "Data.GetData")]
public interface IService1
{
   [OperationContract]
   DataTable GetADUserList(string strUserName, string strFirstName, string strLastName, string strEmail, string domain);
}

找不到名称'CustomBinding'的端点元素。 ServiceModel客户端配置部分

这是因为您在配置文件中定义了两个客户端端点。他们被命名:

  • notsecurebinding和
  • securebinding

因此,错误消息是正确的,没有名称" customBinding"的端点元素。

我认为您需要这样做:

IService1 ADUser = new ChannelFactory<IService1>("<either of the two bindings you defined>").CreateChannel();

我需要配置ASP.NET MVC中与WCF相关的任何内容 应用程序的web.config文件?

好吧,现在我明白了。您正在ASP.NET网站上托管WCF服务。您想从我想的其他地方打电话给它?

您绝对需要在Web.config中定义<system.serviceModel />部分,该部分将告诉IIS如何托管您的服务。

目前,您在上面发布的配置定义为 client 端点。这些不是参考服务端点,而是客户端配置,旨在允许您调用服务。提示以节点的名称:<client />。要定义您希望公开的服务端点,您需要将端点配置放在<service />部分中。在您的情况下,可能只需要将"客户"更改为"服务"才能使其所有工作。

呼叫服务的代码可能需要或可能不需要app.config文件中的客户端配置。您说您正在以编程为单位(尽管没有看到完整的客户端代码,但我不知道您正在做足够的工作来满足WCF客户端呼叫堆栈),在这种情况下,您不需要客户端config。我希望这对您来说更清楚。

相关内容

  • 没有找到相关文章

最新更新