C# 如何向web服务引用添加自定义安全绑定凭据?

C# 如何向web服务引用添加自定义安全绑定凭据?,c#,wcf,soap,.net-4.0,wsdl,C#,Wcf,Soap,.net 4.0,Wsdl,我不熟悉服务参考资料,所以我可能需要简单的解释 我得到了一个WSDL: 我通过MVS2013在我的项目中添加了服务引用,没有任何问题 以下是自动生成的app.config文件: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <bindings> <customBinding> &

我不熟悉服务参考资料,所以我可能需要简单的解释

我得到了一个WSDL:

我通过MVS2013在我的项目中添加了服务引用,没有任何问题

以下是自动生成的app.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
    <bindings>
        <customBinding>
            <binding name="CRMServiceOrderBinding">
                <textMessageEncoding messageVersion="Soap11" />
                <httpsTransport />
            </binding>
        </customBinding>
    </bindings>
    <client>
        <endpoint 
            address="https://test.servicebench.com/servicebenchv5/services/CRMServiceOrderService"
            binding="customBinding"
            bindingConfiguration="CRMServiceOrderBinding"
            contract="ServiceBenchReference.CRMServiceOrderPortType" 
            name="CRMServiceOrderPort" />
    </client>
</system.serviceModel>
</configuration>
但它不起作用。我通过Fiddler检查了请求,但没有看到在标题中传递的凭据


因此,我的问题是:如何才能使这3个自定义凭据信息正确地传递到标头中?(所以我得到了服务器的响应)

再搜索几个小时后,我设法找到了一个合适的解决方案

感谢Thorarin的代码

在app.config文件中使用自定义绑定似乎迫使您手动添加安全元素。我不认为这是最好的方法,但它是这样工作的

CRMServiceOrderPortTypeClient ServiceOrder = new CRMServiceOrderPortTypeClient();
ServiceOrder.ClientCredentials.UserName.UserName = myUserID;
ServiceOrder.ClientCredentials.UserName.password = myPassword;