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

使用WSDL生成类构建SOAP请求未附加认证头,调用服务无响应

排查C#调用SOAP服务无输出问题(未关联认证头)

核心问题就是你没把认证头实例绑定到DataDownloadService代理类上,服务端因为缺少必填的认证信息,大概率直接拒绝了请求,而你的代码没处理异常,导致程序静默卡住或终止,没有后续输出。

解决步骤:

  1. 绑定认证头到服务实例
    通过WSDL生成代理类时,会自动生成对应CMBHSAuthenticationHeader的属性,你需要把创建好的认证头实例赋值给服务类的这个属性,代码示例:

    // 实例化SOAP服务代理类
    var dataService = new DataDownloadService();
    // 创建并配置认证头
    var authHeader = new CMBHSAuthenticationHeader();
    authHeader.Username = "你的用户名";
    authHeader.Password = "你的密码";
    // 关键操作:将认证头绑定到服务实例
    dataService.CMBHSAuthenticationHeaderValue = authHeader;
    
  2. 添加异常捕获定位问题
    无输出很大概率是未捕获的异常导致的,给调用代码加上完整的异常捕获,就能看到具体错误:

    try
    {
        // 调用Download方法,传入你的业务参数
        var downloadResult = dataService.Download(/* 此处传入方法所需参数 */);
        // 输出结果日志
        Console.WriteLine($"请求成功,结果:{downloadResult}");
    }
    catch (System.Net.WebException ex)
    {
        // 捕获网络类异常,可查看服务端返回的错误响应
        using (var responseStream = ex.Response?.GetResponseStream())
        using (var reader = new System.IO.StreamReader(responseStream))
        {
            Console.WriteLine($"网络错误详情:{reader.ReadToEnd()}");
        }
    }
    catch (System.Web.Services.Protocols.SoapException ex)
    {
        // 捕获SOAP服务返回的业务级错误
        Console.WriteLine($"SOAP服务错误:{ex.Message},错误代码:{ex.Code}");
    }
    catch (System.Exception ex)
    {
        // 捕获其他所有未知异常
        Console.WriteLine($"未知错误:{ex.ToString()}");
    }
    
  3. 验证请求格式(可选)
    如果绑定认证头后仍有问题,可以开启SOAP请求日志,对比你已有的正常请求,确认发送的内容是否一致。在项目的app.config或web.config中添加以下配置:

    <system.diagnostics>
        <sources>
            <source name="System.Net" tracemode="includehex" maxdatasize="2048">
                <listeners>
                    <add name="NetTrace"/>
                </listeners>
            </source>
        </sources>
        <sharedListeners>
            <add name="NetTrace" type="System.Diagnostics.TextWriterTraceListener" initializeData="soap_request.log"/>
        </sharedListeners>
        <switches>
            <add name="System.Net" value="Verbose"/>
        </switches>
    </system.diagnostics>
    

    运行程序后,查看生成的soap_request.log,检查请求中是否包含了正确的CMBHSAuthenticationHeader内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:22:55