我想阻止用户访问我的“〜/ Content/...”文件夹,我在“Global.asax.cs”中将其编写为如下所示,并将此行代码放在每个其他路径的顶部 routes.IgnoreRoute("Content/{*pathInfo}");
但它不起作用。实际上用户可以通过在浏览器中键入URL来查看内容文件夹中的每个文件。 我错过了什么?为什么我的IgnoreRoute不起作用?
4
A
回答
4
你是怎么知道它不起作用的?举例说明。
您可能已将它放在路由表中。因此,请尝试将其向上移动,以便将其添加到路由表的第一个。路线集合是路线的有序列表。
也试试这个:Routes.IgnoreRoute("Content/");
,但你的版本忽略也是正确的,它应该工作。
最后,当你说用户可以看到内容文件夹的所有内容时,我不知道你的意思:难道那不是重点吗?用户必须能够从该文件夹下载文件,并且我们通常只需要MVC就可以忽略进入框架的请求,并且IIS可以直接提供这些文件。
或者您的意思是启用了目录浏览功能,并且您希望禁用该功能:在这种情况下,请转到IIS管理器,然后选择您的网站并查找目录浏览选项并将其禁用,如here所示。
2
您的问题无法通过路由约束来解决。处理请求中有3个重要步骤:
- IIS获得请求。
- IIS在文件系统中查看并搜索与文件的直接对应关系
- 如果IIS没有找到任何文件 - 它向ASP.NET MVC提供处理请求。
因此,您需要将文件夹安全性配置为禁止直接访问文件,但允许访问应用程序,如here。 但我不建议保护文件夹,应该共享。我不相信你的网站不应该有图像显示:)如果你有一些安全的内容,你需要创建另一个文件夹。
相关问题
- 1. ASP.NET路由ignoreRoute不起作用
- 2. 为什么我的define_method不起作用?
- 3. 为什么我的sessionStorage不起作用
- 4. 为什么我的JSON不起作用
- 5. 为什么我的javascript不起作用
- 6. 为什么我的@MappedSuperClass不起作用?
- 7. 为什么我的StringReplace不起作用?
- 8. 为什么我的lambda不起作用?
- 9. 为什么我的assertEquals不起作用?
- 10. 为什么我的removeEventListener不起作用?
- 11. 为什么我的form_validation不起作用?
- 12. 为什么我的CSS不起作用?
- 13. 为什么我的SqlBulkCopy不起作用
- 14. 为什么我的backgroundWorker不起作用?
- 15. 为什么我的KeyListener不起作用?
- 16. 为什么我的DataStateBehavior不起作用
- 17. 为什么我的mysql_real_escape_string不起作用?
- 18. 为什么我的notify()不起作用?
- 19. 为什么我的simplexml_load_file不起作用?
- 20. 为什么我的clearInterval不起作用?
- 21. 为什么我的ConcurentSet不起作用?
- 22. 为什么我的setState不起作用?
- 23. 为什么我的@singleton不起作用?
- 24. 为什么我的@autowired不起作用
- 25. 为什么我的.autocomplete不起作用?
- 26. 为什么form_for对我不起作用
- 27. :不起作用,为什么?
- 28. 我找不出为什么我的代码不起作用?
- 29. 我不知道为什么我的代码不起作用
- 30. 我的程序不起作用,我不知道为什么?
我把它放在每一个其他路线的顶部(不起作用)并且写下你建议的路线(不再工作)。通过“不起作用”我的意思是当使用在浏览器中输入'/ Content/Site.css'时,我的CSS文件将显示在浏览器中,并且我想忽略此行为 – Rzassar
@Rzassar如果您希望浏览器加载CSS并使用它来呈现你的页面,你不能阻止用户在浏览器中显示CSS,这是根本不可能的... – Jon
@Rzassar:在地址栏中输入'/ Content/Site.css'并看到样式表是正常的。它发生在互联网上的每个**网站上,只需转到任何网站并使用萤火虫,找到其样式表的链接并将其输入到adderssbar并查看。 – Zasz