【发布时间】:2012-07-23 13:59:20
【问题描述】:
我正在使用 IIS7.5。我有一个简单的 ASP.NET 网络表单站点,它在 global.asax 中使用基本的 URL 重写,拦截对 .aspx 页面的请求并将它们传递给各种模板页面。
例如,您可以请求http://www.mysite.com/default.aspx。在 global.asax 中,我首先检查它是否作为“真实”页面存在。如果没有,我会去数据存储获取详细信息并重定向到 template.aspx?page=default(或类似的东西)。
这一切都很好。但是,有一个问题。如果我浏览到http://www.mysite.com/default.aspx 我会得到我期望的页面。如果我在 web.config 或 IIS 中将默认文档设置为 default.aspx,然后浏览到 http://www.mysite.com/ 我会收到关于不允许浏览目录的错误。
在这种情况下,为什么 IIS 会忽略默认文档?这似乎是因为文件“default.aspx”不存在。如果是这种情况,是否有解决该问题的方法?
编辑
澄清一下,我无法控制 IIS 系统,它位于非常基本的主机上,尽管我可以请求一些更改,所以我不能使用任何 URL 重写模块。
【问题讨论】:
-
那么 default.aspx 是您网站上的实际页面吗?
-
没有物理的default.aspx文件,没有。
-
针对您的情况的解决方法:将 Index.aspx 创建为默认文档作为物理文件并将用户重定向到 Default.aspx URL。因此,当用户访问 mysite.com/ 时,index.aspx 将启动并强制重定向到 default.aspx,然后它可以处理您的模板重定向逻辑。
-
另外,您可以检查您的托管服务提供商是否已经安装了 Url Rewrite,然后您可以这样处理。