OData请求中出现错误的请求异常
本文关键字:请求 异常 错误 OData | 更新日期: 2023-09-27 18:27:28
在执行此代码段期间
var res = ctx.Resources.Where(
t => t.ResourceId == "T/15")
.First();
程序抛出错误请求-查询语法错误异常。
问题是字符串中的"/"字符。
需要注意的是,ResourceId是一个字符串,是Resources实体的"键"。
特殊字符在我们的系统中是强制性的。
由于在OData请求中必须转义像/
这样的特殊字符,因此会发生此错误。在.Net Framework中,您可以使用Uri.EscapeDataString方法来实现此目的,例如:
var encResourceId = Uri.EscapeDataString("T/15");
var res = ctx.Resources.Where(
t => t.ResourceId == encResourceId)
.First();
假设指定的查询将转换为以下OData请求:
http://localhost/odata/Resources()?$filter=ResourceId eq 'T%2F15'