Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF自定义绑定或基本绑定_C#_.net_Wcf_Web Services - Fatal编程技术网

C# WCF自定义绑定或基本绑定

C# WCF自定义绑定或基本绑定,c#,.net,wcf,web-services,C#,.net,Wcf,Web Services,我正在尝试实现WCF客户端。服务器需要WSSE头 我能够使它与HTTP一起工作。但是,它不适用于HTTPS 我已经给了两个URL进行测试,一个是HTTPS,一个是HTTP。生产服务器将使用HTTPS 我正在使用CustomBinding使其与HTTP一起工作 以下是绑定的代码: var securityElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement(); securityElement.Enab

我正在尝试实现WCF客户端。服务器需要WSSE头

我能够使它与HTTP一起工作。但是,它不适用于HTTPS

我已经给了两个URL进行测试,一个是HTTPS,一个是HTTP。生产服务器将使用HTTPS

我正在使用CustomBinding使其与HTTP一起工作

以下是绑定的代码:

var securityElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
securityElement.EnableUnsecuredResponse = true;
securityElement.MessageSecurityVersion = MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;
var encodingElement = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);
var transportElement = new HttpTransportBindingElement();
var binding = new CustomBinding(securityElement, encodingElement, transportElement);
return binding;
当我使用HTTP URL时,它工作得很好。当我尝试使用相同绑定的HTTPS时,出现以下错误:

“serviceRequestUpdate\u PortType.”协定的“CustomBinding.”绑定“”配置了需要传输级别完整性和机密性的身份验证模式。但是传输无法提供完整性和机密性。”

我还尝试过对HTTPS使用basichttpbinding,如下所示:

var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
return binding;
现在在这种情况下,我得到以下错误:

“安全处理器无法在消息中找到安全标头。这可能是因为消息是一个不安全的错误,或者是因为通信双方之间存在绑定不匹配。如果服务配置为安全性,而客户端未使用安全性,则可能会发生这种情况。”


我注意到实际的web服务调用已经完成,操作已经执行。似乎它在收到回复方面存在问题。我还注意到,当我发出请求时,我会传递时间戳,但响应没有时间戳,这可能会导致绑定不匹配。但是如果我使用
basicHttpBinding
的话,就无法设置
IncludeTimestamp=false
,我得到的答案只是需要更改var-transportElement=new-HttpTransportBindingElement();to var transportElement=新的HttpsTransportBindingElement();使用自定义绑定

我得到的答案只是需要更改var transportElement=new HttpTransportBindingElement();to var transportElement=新的HttpsTransportBindingElement();并使用自定义绑定。此问题似乎与主题无关,因为用户获得了anwser@Ravi-得到答案会使问题偏离主题?@Tim Nope。但用户已经得到了答案。所以如果需要,可以重新打开关闭投票:)没有问题可能OP应该回答他自己的问题,而不是对其进行评论。你也可以将此标记为一个答案,这样人们就会知道它对你有效。这对我来说是一个多大的问题。。感谢自定义绑定以允许EnableUnsecuredResponse设置。。。