在 asp.net 中下载文件时遇到 404 错误:请求筛选模块被配置为拒绝包含双重转义序列的请求。
似乎是因为路径或文件名中包含加号导致的转义问题。
网上的解决方案基本都是说根据描述,将 web.confg 文件中的 configuration/system.webServer/security/requestFiltering@allowDoubleEscaping 设置为 true 即可。
不过按说默认不允许应该有相关的安全性考虑。
根据网上讨论:https://stackoverflow.com/questions/1453218/is-enabling-double-escaping-dangerous
似乎安全性问题也没那么严重,如果没有将 url 字符串在后续文件系统等操作中使用,所以可以考虑放开该限制。
另外如果还不放心的话,可以设置仅对部分路径开发该设置:
示例配置如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <!-- 增加对下载目录特殊字符(加号)的允许 --> <!-- ReSharper disable once WebConfig.RedundantLocationTag --> <location path="Resources/Downloads"> <system.webServer> <security> <requestFiltering allowDoubleEscaping="true" /> </security> </system.webServer> </location> </configuration>
此配置对于网站根路径下的 Resources/Downloads 路径允许了路径中的加号。
输了你,赢了世界又如何...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!