作为CMS的一部分,我创建了一个定制的virtualpathprovider,它设计为服务于单个文件而不是实际的文件结构。我将其设置为如果服务器上确实存在一个文件,那么该文件将被提供。如果该文件不存在,则将为该地址存储的虚拟内容提供服务。这类似于从数据库中存储的文件为网站提供服务的概念,但在本例中,内容存储在服务器上的XML文件中。
当向特定页面发出请求时,此设置工作正常。例如,如果我要求“www.mysite.com/foobar.aspx”,那么为“foobar.aspx”存储的内容将得到服务。此外,如果我要求“www.mysite.com/subdir/foobar.aspx”,也将提供适当的内容。
问题是:如果我要“www.mysite.com/foobar”之类的东西,事情就会开始分崩离析。如果目录存在于磁盘上(并且在IIS中没有配置的默认页,如index.aspx),我将得到一个“目录列表被拒绝”错误。如果目录不存在,我只会得到一个404-资源找不到。
我试过几件事,但到目前为止,我所做的一切都没有起到什么作用。似乎IIS只是注意到一个目录(或现有目录中的默认文件)不存在,并提供自己的错误代码,而从未询问我的应用程序如何处理该请求。如果它真的到达了应用程序,我就能够解决这个问题,但就目前而言,我完全迷路了。有人知道IIS中是否存在导致此问题的某些设置吗?
我已经找到了我能找到的关于这个主题的每一个资源,现在都是空的。我知道这是可能的,因为我已经阅读了有关从数据库和zip文件提供内容的教程。救命!
另外,我正在运行iis6和.net 3.5