如何强制ASP.NET完全忽略虚拟子目录

时间:2011-05-31 13:13:05

标签: asp.net asp.net-mvc iis-7

我有一个ASP.NET MVC 3应用程序,它位于IIS下的 localhost / myapp

在IIS(版本7+)中映射到网络共享的应用程序下有一个虚拟目录(非应用程序) localhost / myapp / upload

我希望ASP.NET忽略对该目录下文件的请求,并让IIS自己处理请求。

我尝试过将 routes.IgnoreRoute(“upload / {* pathInfo}”)添加到global.asax.cs,但仍然没有运气。

当我尝试访问静态文件时,像这样的ASP.NET错误无法开始监控对'\\ server \ share \ myupload \ web.config'的更改该目录下的jpeg。

该上传目录下没有web.config文件。它不是ASP.NET应用程序。我不想授予对网络服务或ASP.NET用户的访问权限,只是让它检查那里是否存在这样的文件。如果我这样做,有人会在那里上传一个.aspx文件,并在我的服务器上执行他们喜欢的任何代码。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此案例的最佳解决方案可能是禁用此目录的目录列表,如本教程中所示:

http://technet.microsoft.com/en-us/library/cc731109(WS.10).aspx

对于下载链接,您应该创建一个永久链接数据库并将它们存储在数据库中。因此,如果您在www.mysite.com/myapp/upload/file1.doc上有文件,则用户将看到的URL将是www.mysite.com/myapp/ControllerThatHandlesRedirect/{some guid}。所有链接都将存储在数据库中,并根据特定的guid从数据库中获取。因此,用户不会仅看到GUID的真实URL。控制器将根据永久链接从数据库中选择URL,并将用户重定向到该文件。

希望能帮到你