gpt4 book ai didi

c# - ASP.NET MVC Controller 处理文件下载

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:16 25 4
gpt4 key购买 nike

我在 MVC 5 中构建了一个 Controller 来处理受登录保护的文件下载。 Controller 在没有 pdf 扩展名的情况下工作正常,即/media/1001/secretpdffile 之类的路径仅在用户登录时才会在 App_Data/media/1001/secretpdffile.pdf 下载文件。

我想在路径上添加 pdf 扩展名,但是一旦我添加它(当然也删除了我在 Controller 中添加的 pdf),我就收到了 404 错误。

这是我的路线

routes.MapRoute(
name: "Media",
url: "media/{mediaid}/{filename}",
defaults: new { controller = "Media", action = "Get" }
);

我已经看到很多地方试图通过 或在 web.config 中使用 System.Web.Handlers.TransferRequestHandler 设置路径来解决这个问题,但我没有祝你好运。

最佳答案

这是 IIS 的正常行为,称为 request filtering .基本上它不会向 ASP.MVC 发送请求,如果有一个点,因为它会认为你想要一个文件,所以它会在服务器上寻找文件并返回 404 错误,因为它找不到它。

您可以在这里找到一些解决方案:https://stackoverflow.com/a/12151501/1681023

或者您可以在 IIS 上编辑您的配置,禁用第一个链接显示的功能。

或者您可以通过替换为 %2E 来转义您的点,这可能是最简单的方法。

附带说明一下,禁用请求过滤功能时要小心,显然,如果您为 https://stackoverflow.com/media/* 禁用它,您将无法访问任何来自 http 请求的名为 media 的文件夹中的资源,因此,如果您想在您的网站上使用一些图像、css 或 js,请不要为您的所有应用程序或服务器禁用它。

关于c# - ASP.NET MVC Controller 处理文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27987546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com