GET API请求撇号经UrlEncode、EscapeDataString编码后引发数据库报错如何解决
问题根因
你当前的异常由逻辑错误导致:URI路径段的URL编码结果被直接用作了数据库连接的Catalog参数值。数据库实际的库名为原始字符串Sam's Club Operations Executive P&L Report DS,而非编码后的带%27/%20等转义符的版本,因此数据库无法识别对应库名。
解决方案
按以下步骤调整逻辑即可修复:
- 拆分HTTP请求处理和数据库参数赋值的逻辑:URI传输阶段使用
Sam%27s%20Club%20Operations%20Executive%20P%26L%20Report%20DS编码后的路径段,保证HTTP请求可以正常发起。 - 提取路径段作为数据库
Catalog参数前,必须先做URL解码,还原成原始库名字符串:可调用HttpUtility.UrlDecode或Uri.UnescapeDataString处理编码后的路径段,解码后结果应为完整的Sam's Club Operations Executive P&L Report DS。 - 确认Web框架的自动解码逻辑:多数Web框架会自动对路由参数做URL解码,如果你是从路由中直接获取该路径段,直接取值即可,不要额外编码后再填入连接字符串。
- 最终校验填入
Catalog的字符串,确认和实际数据库的库名大小写、特殊符号完全一致:比如单引号为英文半角、&符号无转义,无多余编码字符。
简易验证方法
调试阶段打印赋值给Catalog的实际字符串,确认字符串完全匹配数据库真实库名后再发起数据库连接请求即可快速定位问题。
内容的提问来源于stack exchange,提问作者abhishek
相关产品推荐
相关产品推荐

