【问题标题】:add key and value while call WCF service调用 WCF 服务时添加键和值
【发布时间】:2013-12-27 11:56:46
【问题描述】:

每次调用 WCF 服务时都需要在 Soap 标头中添加键和值。在后面的代码中 以及我们如何在服务中读取该值。

在我的应用程序中,登录时有 4 个数据库,用户将决定他想登录哪个数据库

请提出一些方法来做到这一点

【问题讨论】:

  • 您需要更具体地了解您想要做什么

标签: c# wcf silverlight


【解决方案1】:

您可以创建一个返回服务客户端对象的方法,如下所示

MyService.ErpServiceClient ServiceClient = new MyService.ErpServiceClient();

EndpointAddressBuilder AddressBuilder = new EndpointAddressBuilder(new EndpointAddress(GetServiceUrl()));
AddressBuilder.Headers.Add(AddressHeader.CreateAddressHeader("MyKey", string.Empty, (App.DataBaseKey == null) ? "" : "MyValue"));

return new MyService.ErpServiceClient(ServiceClient.ChannelFactory.Endpoint.Binding, AddressBuilder.ToEndpointAddress());

在服务端读取密钥

OperationContext.Current.IncomingMessageHeaders.GetHeader<string>("MyKey", "");

【讨论】:

  • 感谢卡兰的大力帮助
【解决方案2】:

您可以创建一些抽象的 MyServiceRequestBase 类并从它派生所有请求。此基类应存储 DB 名称(或一些标识 DB 的键),并且只有构造函数接受此参数。

这将确保所有 WCF 服务方法(遵循设计规则并具有从您的基类派生的请求参数对象)传递您的参数以进行 DB 识别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多