作为 CMS 的一部分,我创建了一个自定义 VirtualPathProvider,它旨在提供单个文件来代替实际的文件结构。我已将其设置为,如果服务器上实际存在文件,则将提供该文件。如果该文件不存在,则将提供为该地址存储的虚拟内容。这类似于从存储在数据库中的文件为网站提供服务的概念,但在这种情况下,内容存储在服务器上的 XML 文件中。
当向特定页面发出请求时,此设置可以完美运行。例如,如果我请求“www.mysite.com/foobar.aspx”,则会提供为“foobar.aspx”存储的内容。此外,如果我要求“www.mysite.com/subdir/foobar.aspx”,也会提供相应的内容。
问题是这样的:如果我要求像“www.mysite.com/foobar”这样的东西,事情就会开始崩溃。如果该目录存在于磁盘上(并且在 IIS 中没有配置默认页面,例如 index.aspx),我将收到“Directory Listing Denied”错误。如果该目录不存在,我将简单地得到一个 404 - Resource Not Found。
我已经尝试了几件事,到目前为止,我所做的一切都没有改变。似乎 IIS 只是简单地注意到不存在目录(或现有目录中的默认文件)并提供自己的错误代码,而从未询问我的应用程序如何处理该请求。如果它确实进入了应用程序,我将能够解决问题,但就目前而言,我很迷茫。有谁知道 IIS 中是否存在导致此问题的某些设置?
我已经寻找了我能找到的关于这个主题的每一个资源,但现在都是空的。我知道这应该是可能的,因为我已经阅读了有关从数据库和 ZIP 文件中提供内容的教程。帮助!
ps,我正在运行 IIS6 和 .NET 3.5