c# - .NET 文件名带有 # 错误 - 404 - 找不到文件或目录
问题描述
我正在开发 .NET Core 2.2 应用程序(即将升级)。有一个功能可以在服务器上上传文件,其他用户可以通过链接访问该文件。一切都很好。有一些检查可以防止包含某些字符的文件,包括#
. 我遇到的唯一问题是,客户坚持允许#
输入文件名。上传此类文件时没有问题,但不会通过链接加载。我得到Status Code: 404; Not Found
错误。这是遗留站点(ASP.NET WebForms)以及它显示的地方的问题404 - File or directory not found.
。我得到的 URL 如下所示:/_ClientData/NTTF/Announcements/61/Docs/invalid%20#%20test.pdf
作为最后一个选项,我可以允许这些文件并用#
服务器上的其他内容替换,但我想知道是否有任何方法可以在不操作文件名的情况下完成这项工作。
解决方案
您可能有一个动态生成“可点击链接”的 Razor 页面(或等效页面)。
建议:在提供页面时,使用HttpUtility.UrlEncode()显式生成链接。
它应该生成如下内容:
- 文件名:
invalid # test.pdf
- HttpUtility.UrlEncode:
invalid%20%23%20test.pdf