【发布时间】:2013-08-24 02:52:07
【问题描述】:
我正在尝试访问 WCF 服务。但它给了我以下错误:
ServiceEndpoint 上的 CustomBinding 与合同“IService1” 缺少 TransportBindingElement。每个绑定必须至少有一个 从 TransportBindingElement 派生的绑定元素。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.InvalidOperationException:CustomBinding 在具有合同“IService1”的 ServiceEndpoint 上缺少 传输绑定元素。每个绑定必须至少有一个绑定 派生自 TransportBindingElement 的元素。
以下是我的服务模型完整配置:
<system.serviceModel>
<!-- change -->
<bindings>
<customBinding>
<binding name="Wrabind" closeTimeout="00:02:00" openTimeout="00:02:00">
<transactionFlow />
<security authenticationMode="SecureConversation" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<localClientSettings maxClockSkew="00:07:00" />
<localServiceSettings maxClockSkew="00:07:00" />
<secureConversationBootstrap messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<localClientSettings maxClockSkew="00:30:00" />
<localServiceSettings maxClockSkew="00:30:00" />
</secureConversationBootstrap>
</security>
<textMessageEncoding />
<httpTransport authenticationScheme="Anonymous" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" proxyAuthenticationScheme="Anonymous" realm="" useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<!-- change -->
<services>
<service behaviorConfiguration="WCFService.Service1Behavior"
name="WCFService.Service1">
<endpoint address="http://subdomain.domain.com/service1.svc" binding="customBinding"
bindingName="Wrabind" contract="WCFService.IService1" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WCFService.Service1Behavior">
<!-- To avoid disclosing metadata information, set the value below to false before deployment -->
<serviceMetadata httpGetEnabled="false" />
<!-- change -->
<!--<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WrangleCoreService.Authentication.DistributorValidator, WrangleCoreService"/>
<serviceCertificate findValue="WCFService" storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindBySubjectName"/>
</serviceCredentials>-->
<!-- change -->
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://subdomain.domain.com/"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<!--<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true"
automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>-->
如您所见,它已经有了 Transport 元素。但我仍然在错误之上。是什么原因?
我的客户端配置:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="CustomBinding_IService1" />
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://subdomain.domain.com/service1.svc" binding="wsHttpBinding"
bindingConfiguration="CustomBinding_IService1" contract="ServiceReference1.IService1"
name="CustomBinding_IService1">
<identity>
<userPrincipalName value="DOMAIN\subdomaindomaincom_web" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
【问题讨论】:
-
请发布完整配置
-
@YaronNaveh 查看我更新的配置
-
对我来说似乎不错,尝试进行一些任意更改(删除安全性,删除一些其他标签),看看是否某些标签有问题
-
不应该是 bindingConfiguration="Wrabind",而不是 bindingName="Wrabind"
-
同样去掉编码前的空格行
标签: c# .net wcf web-services custom-binding