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

.NET 6.0中SOAP服务登录的Partial方法实现与Credentials配置问题

在.NET 6.0中配置旧式SOAP服务的ClientCredentials

在.NET 6+版本中,WCF客户端代码生成逻辑有调整,新增的ConfigureEndpoint静态部分方法是统一配置端点和凭据的入口。你可以通过两种方式设置服务所需的ClientCredentials:

方式一:实现Partial方法统一配置

由于生成的PartnerInfoServicePortClient是部分类,只需在同一个命名空间下创建新代码文件,实现这个静态方法即可:

namespace ATGAIS // 必须与生成的客户端类同命名空间
{
    public partial class PartnerInfoServicePortClient
    {
        public static partial void ConfigureEndpoint(string serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials)
        {
            // 注入你的用户名和密码
            clientCredentials.UserName.UserName = "你的用户名";
            clientCredentials.UserName.Password = "你的密码";
        }
    }
}

该方法会在客户端初始化端点时自动执行,所有客户端实例都会继承这个凭据配置。

方式二:实例化后直接设置凭据(更接近.NET 4.8写法)

如果不需要全局统一配置,也可以像.NET 4.8那样,在创建客户端实例后直接设置凭据,只是访问路径略有不同:

var partnerInfoClient = new PartnerInfoServicePortClient();

try
{
    // 直接为当前实例设置用户名密码
    partnerInfoClient.ClientCredentials.UserName.UserName = "你的用户名";
    partnerInfoClient.ClientCredentials.UserName.Password = "你的密码";

    // 调用服务方法,例如:
    // var result = await partnerInfoClient.SomeServiceMethodAsync();
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
    throw;
}
finally
{
    // 记得正确关闭客户端资源
    if (partnerInfoClient.State != System.ServiceModel.CommunicationState.Closed)
    {
        partnerInfoClient.Close();
    }
}

注意事项

  • 确认服务使用的是用户名密码认证(比如BasicHttpBinding的UserName安全模式),如果服务要求其他认证方式(如Windows身份验证),需要调整ClientCredentials对应的属性(比如Windows.ClientCredential)。
  • 如果生成的客户端绑定配置不符合服务要求,可以在实例化客户端时传入自定义的Binding和EndpointAddress参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:05:25