C# 将头添加到端点地址
有没有办法向EndpointAddress添加头 我试过这个:C# 将头添加到端点地址,c#,C#,有没有办法向EndpointAddress添加头 我试过这个: public static ChannelFactory<IClass> CreateFactory() { var authorization = new Authorization() { Key = "test" }; AddressHeader header = AddressHeader.CreateAddr
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的文档地址(见我的答案)清楚地说明了您可以调用哪些构造函数!