You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WCF代理服务(B)中获取并传递用户名密码至WCF服务(A)

WCF代理服务(B)获取客户端凭证并传递至服务(A)的实现方案

现有采用自定义用户验证的WCF服务(A),需开发作为客户端与服务(A)之间代理的WCF服务(B)。核心问题是:如何在服务(B)中获取当前客户端传入的ClientCredentials.UserName.UserName与ClientCredentials.UserName.Password,并将其传递至服务(A)?

服务(B)的初始示例代码如下:

public class WcfServiceB: IWcfServiceB
{
    private WcfServiceA _serviceA;

    public WcfServiceB()
    {
        _serviceA = new WcfServiceA();
        _serviceA.ClientCredentials.UserName.UserName = userName; //how to get current userName of WcfServiceB??
        _serviceA.ClientCredentials.UserName.Password = password; //how to get current password of WcfServiceB??
    }

    public string TestMethod()
    {
        return _serviceA.TestMethod();
    }
}

已实现的方案

通过自定义验证类暂存凭证,再在服务(B)中读取传递:

  1. 创建带静态字段的自定义用户验证类,在验证环节保存客户端传入的凭证:
public class CustomUserCredentials : UserNamePasswordValidator
{
    public static string UserName;
    public static string Password;

    public override void Validate(string userName, string password)
    {
        UserName = userName;
        Password = password;
    }
}
  1. 在服务(B)中通过该静态类获取凭证,设置到服务(A)的客户端凭证中:
public class WcfServiceB: IWcfServiceB
{
    private WcfServiceA _serviceA;

    public WcfServiceB()
    {
        _serviceA = new WcfServiceA();
        _serviceA.ClientCredentials.UserName.UserName = CustomUserCredentials.UserName;
        _serviceA.ClientCredentials.UserName.Password = CustomUserCredentials.Password;
    }

    public string TestMethod()
    {
        return _serviceA.TestMethod();
    }
}

注:该方案可实现需求,但并非最优解。

内容的提问来源于stack exchange,提问作者Jivopis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:20:23