【发布时间】:2010-01-20 21:29:29
【问题描述】:
作为 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
【问题讨论】:
-
你在 IIS6 中有星型映射来将所有请求映射到 ASP.NET 吗?
-
我不确定,所以我想这意味着没有。我该怎么办?
标签: asp.net iis iis-6 content-management-system virtualpathprovider