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

.NET中OData V4无绑定函数如何支持含特殊字符的字符串参数?

解决.NET OData V4无绑定函数中的正斜杠转义问题

在OData V4的URI规范中,正斜杠(/)属于路径分隔符,直接作为字符串参数传递会导致路由解析错误,以下是几种可行的解决方式:

1. 使用URL编码转义

将参数中的正斜杠替换为对应的URL编码%2F,修改后的请求URI示例:

/Test/Default.MyFunction1(value1='HV%2FPD%20Testing')

控制器中的[FromODataUri]属性会自动完成解码,无需手动处理,方法内可直接获取到包含/的原始参数值。

2. 配置允许未转义斜杠(谨慎使用)

若希望避免每次手动编码,可修改WebApi的路由配置,允许未转义的斜杠存在于路由中:

// 在WebApiConfig.cs的Register方法中添加配置
config.Routes.MapODataServiceRoute("ODataRoute", null, modelBuilder.GetEdmModel(), new DefaultODataPathHandler()
{
    UrlKeyDelimiter = ODataUrlKeyDelimiter.Slash
});
// 开启宽松的URL到文件系统映射,允许未转义斜杠
config.RelaxedUrlToFileSystemMapping = true;

⚠️ 注意:这种方式存在安全风险,可能被利用进行路径遍历攻击,仅在可信环境中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:55:01