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

ASMX服务接收QRCode字符串参数时存在字符缺失问题求助

问题定位与分析

核心现象

你收到的QRCode是URL编码后的字符串(包含%2B、%3D这类URL转义字符),而期望的是原始Base64格式字符串,两者的差异本质是URL编码与原始字符串的区别。

问题判定:大概率出在调用端

原因如下:

  1. 你的ASMX方法配置了[ScriptMethod(ResponseFormat = ResponseFormat.Json)],这类接口通常接收JSON格式请求体。此时QRCode作为JSON字符串字段,不需要做URL编码——如果调用端错误地对Base64字符串执行了URL编码再放入JSON,服务端就会收到带%的编码后内容。
  2. 如果调用端用GET请求传递参数:Base64确实需要URL编码,但ASP.NET的WebMethod会自动对URL参数做解码,正常情况下你应该收到原始Base64;若仍收到编码后的内容,说明调用端可能做了两次URL编码,导致服务端解码一次后仍残留编码痕迹。

验证与解决建议

  • 快速验证:将你收到的带%的字符串执行一次URL解码(比如把%2B转成+、%3D转成=),看是否与期望的Base64一致。
  • 调用端排查:
    • 若用AJAX发送JSON,检查是否对QRCode字段做了不必要的encodeURIComponent或类似URL编码操作;
    • 若用GET请求,确认是否重复编码了参数。
  • 服务端兼容处理:可在方法内部对参数手动解码验证,代码示例:
    using System.Web;
    
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public void GetValidationTicket(int idDispositivo, string QRCode, int tipologiaDispositivo, int profiloDispositivo)
    {
        // 尝试解码验证
        string decodedQrCode = HttpUtility.UrlDecode(QRCode);
        // 对比decodedQrCode是否与期望的Base64一致
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:13:17