C# ServiceEndpoint上的CustomBinding与契约';IService1';尝试访问wcf服务时缺少TransportBindingElement错误
我正在尝试访问WCF服务。但它给了我以下错误: 合约为“IService1”的ServiceEndpoint上的CustomBinding 缺少TransportBindingElement。每个绑定必须至少有一个 从TransportBindingElement派生的绑定元素 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息:System.InvalidOperationException:CustomBinding 在合约为“IService1”的ServiceEndpoint上缺少 TransportBindingElement。每个绑定必须至少有一个绑定 从TransportBindingElement派生的元素 以下是我的服务模型完整配置:C# ServiceEndpoint上的CustomBinding与契约';IService1';尝试访问wcf服务时缺少TransportBindingElement错误,c#,.net,wcf,web-services,custom-binding,C#,.net,Wcf,Web Services,Custom Binding,我正在尝试访问WCF服务。但它给了我以下错误: 合约为“IService1”的ServiceEndpoint上的CustomBinding 缺少TransportBindingElement。每个绑定必须至少有一个 从TransportBindingElement派生的绑定元素 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息:System.InvalidOperationException:CustomBindi
<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>-->
正如您所看到的,它已经有了传输元素。但我还是克服了错误。原因是什么
我的客户端配置:
<?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>
伙计,我劝你不要那样做。如果在服务器上使用自定义绑定,那么也应该在客户端中使用它。如果在客户机上使用WSHttp,则服务器应具有相同的绑定点。我怀疑您是否需要在您的情况下创建自定义绑定。在90%的情况下,标准WCF绑定足以提供适当的解决方案。不要开发新自行车。 至于第二个问题,假设这是在自定义绑定中使用WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10的原因,它需要使用证书来实现安全性。
无论如何,我建议您使用WSHttp更改自定义绑定,请发布完整的config@YaronNaveh查看我更新的配置对我来说似乎很好,尝试进行一些任意更改(删除安全性,删除一些其他标记)以查看某些标记是否有问题。是否应该是bindingConfiguration=“Wrabind”,而不是bindingName=“Wrabind”另外,在编码之前删除空格行实际上我遇到了这个问题,所以我切换到CustomBinding哦,我看到在您的情况下,定制绑定是一种方式。但是可以同步服务器和客户端上的时钟吗?你的消息安全异常状态和以前一样吗?是的,它状态是一样的。时间同步也帮不上忙。因为安装我的应用程序的人可能比MaxClockSkew有更多的时差,因为我的应用程序将在全球范围内下载,所以这将限制他们使用我的应用程序。那是我不想要的。两个星期以来,我一直在努力找出解决办法。我现在别无选择。请帮助。@AishwaryaShiva很难模拟您的问题,所以我只能给您以下建议。使舒尔在服务器和客户端上具有相同的绑定配置。确保在客户端和服务器上都设置了MaxClockSkew。确保在客户端设置LocalClientSecuritySettings MaxClockSkew,在服务器端设置LocalServiceSecuritySettings MaxClockSkew。如果你像我说的那样做每件事,它应该会起作用。看,假设它能帮助你