C# 在C中创建自定义绑定#
我一直在尝试创建一个自定义绑定来输出这种类型的头XML:C# 在C中创建自定义绑定#,c#,asp.net,wcf,C#,Asp.net,Wcf,我一直在尝试创建一个自定义绑定来输出这种类型的头XML: <soapenv:Header> <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-BEC9D84D8B68A3118D14543420311491">
<wsse:Username>user</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pass</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">hBcjVXk/NxiSiva5xXKphA==</wsse:Nonce>
<wsu:Created>2016-02-01T15:53:51.146Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
然而,我一直收到一条信息,说明:
无法处理该消息。这很可能是因为操作不正确,或者是因为消息包含无效或过期的安全上下文令牌,或者是因为绑定之间不匹配
我很确定这与我的custombinding有关,但我很难弄清楚什么属性需要设置为什么。感谢您的指导 我认为客户端时间和服务器时间不匹配,至少错误看起来是这样的 你能检查一下你的计时器吗
如果我是对的,请看以下内容:您的绑定看起来很像正在工作的自定义绑定-尽管我使用了BinaryMessageEncoding。。这将值得一次tryThanks-new错误消息:
响应消息的内容类型text/html与绑定的内容类型(application/soap+msbin1)不匹配。如果使用自定义编码器,请确保正确实现IsContentTypeSupported方法
当您在vs中加载引用时,会有人问您希望如何处理各种集合-我想知道这是否是为您所做的。。。谈到这个错误,问题是——当我使用wshttp绑定时,它几乎创建了我所需要的XML,除了头部分中的4或5个额外节点。在我的研究之后,我被告知要创建一个自定义绑定,但我的分歧在于如何创建一个自定义绑定,该绑定模仿wshttp绑定,但我不想展示的节点除外有时向导们自己会对自己的魔力感到惊讶。(这是关于XAML技术的概述):-)
var customBinding= new CustomBinding();
var securityBindingElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
securityBindingElement.IncludeTimestamp = false;
customBinding.Elements.Add(securityBindingElement);
customBinding.Elements.Add(new TextMessageEncodingBindingElement());
var transportElement = new HttpsTransportBindingElement();
customBinding.Elements.Add(transportElement);