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

为何该URI在OData服务中触发运行时错误?

解决OData筛选中特殊字符引发的运行时错误问题

刚碰到这个问题的时候我也懵过,其实核心是URL参数编码的问题——你在请求里用了HTML转义的&lt;来表示<字符,但OData服务的$filter参数认的是URL编码,不是HTML转义,这才导致服务器解析失败抛出运行时错误。

问题原因拆解

  • 虽然Supplier实体的Address属性是Edm.String类型,理论上支持任意UTF-8字符,但请求URL的参数必须符合URL编码规范,服务器才能正确解析筛选表达式。
  • 你用的&lt;是HTML里用来转义<的实体,放到URL里会被服务器当成筛选表达式的一部分,破坏了表达式的语法结构,直接触发解析错误。

修复方案

把特殊字符换成对应的URL编码值就行:

  1. 将<编码为%3C,修正后的请求URL应该是:
    http://services.odata.org/V4/Northwind/Northwind.svc/Suppliers?$filter=Address eq '%3CA'
    
  2. 如果是代码生成请求,别手动编码,用语言自带的工具处理更稳妥:
    • JavaScript里用encodeURIComponent('<A')
    • C#里用HttpUtility.UrlEncode("<A")
      这些工具会自动处理所有需要编码的特殊字符,避免遗漏。

小提醒

OData的字符串筛选值必须用单引号包裹,这一点你已经做对了,别忘就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:29:02