【发布时间】:2010-08-25 12:57:07
【问题描述】:
我正在使用 ASMX Web 服务并使用 customBinding 为该服务创建 WCF 客户端。在 customBinding 安全部分中,我使用 authenticationMode 作为“KerberosOverTransport”并使用 HTTP 作为传输介质。请看下面的代码。
<customBinding>
<binding name="Service1Soap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00">
<security allowSerializedSigningTokenOnReply="true" authenticationMode="KerberosOverTransport"
requireDerivedKeys="false" messageProtectionOrder="SignBeforeEncryptAndEncryptSignature"
messageSecurityVersion="Default" requireSecurityContextCancellation="false">
<secureConversationBootstrap />
</security>
<textMessageEncoding messageVersion="Soap11" />
<httpTransport authenticationScheme="Ntlm" unsafeConnectionNtlmAuthentication="false" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://localhost:1612/TestService.asmx" binding="customBinding"
bindingConfiguration="Service1Soap" contract="WCFProxy.Service1Soap"
name="Service1Soap" />
</client>
当我创建 Proxy 类的实例并调用 Web 服务的 Hello World 方法时,我得到以下异常。
“'Service1Soap'.'urn:Service1' 合约的 'CustomBinding'.'http://tempuri.org/' 绑定配置了需要传输级别完整性和机密性的身份验证模式。但是传输无法提供完整性和机密性。 "
================================================ ============================================
在 System.ServiceModel.Dispatcher.SecurityValidationBehavior.SoapOverSecureTransportRequirementsRule.ValidateSecurityBinding(SecurityBindingElement securityBindingElement, Binding binding, ContractDescription contract)
在 System.ServiceModel.Dispatcher.SecurityValidationBehavior.ValidateSecurityBinding(SecurityBindingElement sbe,绑定绑定,ContractDescription 合同)
在 System.ServiceModel.Dispatcher.SecurityValidationBehavior.ValidateBinding(绑定绑定、ContractDescription 合约、SecurityBindingElement&securityBindingElement)
在 System.ServiceModel.Dispatcher.SecurityValidationBehavior.System.ServiceModel.Description.IEndpointBehavior.Validate(ServiceEndpoint serviceEndpoint)
在 System.ServiceModel.Description.ServiceEndpoint.Validate(布尔 runOperationValidators,布尔 isForService)
在 System.ServiceModel.Channels.ServiceChannelFactory.BuildChannelFactory(ServiceEndpoint serviceEndpoint)
在 System.ServiceModel.ChannelFactory.CreateFactory()
在 System.ServiceModel.ChannelFactory.OnOpening()
在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)
在 System.ServiceModel.ClientBase1.System.ServiceModel.ICommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.ClientBase1.Open()
在 D:\Rakesh\Test Projects\WebServiceCustomBinding\WCFClient\Program.cs:line 16 中的 WCFClient.Program.Main(String[] args)
在 System.AppDomain._nExecuteAssembly(程序集程序集,字符串 [] 参数)
在 System.AppDomain.ExecuteAssembly(字符串 assemblyFile,证据 assemblySecurity,String [] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback 回调,对象状态)
在 System.Threading.ThreadHelper.ThreadStart()
我在谷歌上搜索这个异常时没有运气。研发部分到现在已经2天了。请在此问题上为我提供一些帮助。有你的帮助我会很高兴的!
问候, 拉克什。
【问题讨论】:
标签: wcf wcf-binding wcf-client kerberos