OData请求中出现错误的请求异常

本文关键字:请求 异常 错误 OData | 更新日期: 2023-09-27 18:27:28

在执行此代码段期间

var res = ctx.Resources.Where(
            t => t.ResourceId == "T/15")
            .First();

程序抛出错误请求-查询语法错误异常。

问题是字符串中的"/"字符。

需要注意的是,ResourceId是一个字符串,是Resources实体的"键"。

特殊字符在我们的系统中是强制性的。

OData请求中出现错误的请求异常

由于在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'