C# 将头添加到端点地址

C# 将头添加到端点地址,c#,C#,有没有办法向EndpointAddress添加头 我试过这个: public static ChannelFactory<IClass> CreateFactory() { var authorization = new Authorization() { Key = "test" }; AddressHeader header = AddressHeader.CreateAddr

有没有办法向EndpointAddress添加头

我试过这个:

    public static ChannelFactory<IClass> CreateFactory()
    {
        var authorization = new Authorization()
        {
            Key = "test"
        };
        AddressHeader header = AddressHeader.CreateAddressHeader(authorization);

        var address = new EndpointAddress(ClientConfig.Endpoint, header);
        var channel = new ChannelFactory<IClass>(address.ResolveBinding(), address);
        return channel;
    }
publicstaticchannelfactory CreateFactory()
{
var authorization=新授权()
{
Key=“测试”
};
AddressHeader头=AddressHeader.CreateAddressHeader(授权);
var address=新的端点地址(ClientConfig.Endpoint,header);
var channel=new ChannelFactory(address.ResolveBinding(),address);
返回通道;
}
由于某些原因,
新端点地址
无法工作,因为它无法理解标头

(与“System.ServiceModel.EndpointAddress.EndpointAddress(System.Uri,System.ServiceModel.EndpointAddress)”匹配的最佳重载方法具有一些无效参数。)

没有头球一切都好

我做错了什么?通过查看,我无法理解…

,您可以看到该类在其构造函数中不接受单个EndpointAddress,而是接受EndpointAddress对象数组

所以你应该试试:

AddressHeader header = AddressHeader.CreateAddressHeader(authorization);
var address = new EndpointAddress(ClientConfig.Endpoint, new[] { header });

不。问题没有改变。EndpointAddress应具有公共EndpointAddress(Uri Uri、EndpointIdentity标识、params AddressHeader[]AddressHeader);但它根本不起作用,或者我仍然缺少一些东西。您是如何更改EndpointAddress的初始化的?你现在得到了什么例外?还是我问题中的例外。我尝试了你的建议,但没有改变:(嗯……我想我明白了。向EndpointAddres添加头需要System.Uri,但ClientConfig.Endpoint是字符串……如果
ClientConfig.Endpoint
是表示Uri的字符串,那么只需实例化一个新的Uri对象。请参阅。我假设
ClientConfig.Endpoint
已经是一个有效的Uri对象。Endpoint的文档地址(见我的答案)清楚地说明了您可以调用哪些构造函数!