如何区分ASP.NET中的/(root)和/default.aspx

时间:2010-04-05 11:22:09

标签: asp.net iis iis-7 url-rewriting

Request.RawUrl 始终返回 /default.aspx 变体。我没有找到根本的任何方法来区分这些网址。有谁知道怎么做? IIS 7上的环境是.NET 3.5SP1。

1 个答案:

答案 0 :(得分:1)

在设计我的URL Rewriter时,我实际上必须解决同样的问题。它与您甚至可以访问URL之前发生的过程有关。要解决此问题,您必须确保在IIS 7中关闭默认页面处理。因为如果没有默认的页面处理,它将不会经历尝试将其映射到驱动器的额外步骤,因此您将是所请求的确切URL。但这可能是也可能不是一种选择,具体取决于您是否使用System.Web.Routing

要关闭默认页面处理,您需要执行以下操作:

  1. 转到IIS中的站点
  2. 转到默认文档
  3. 点击右上角的停用
  4. 或者您可以将以下内容添加到web.config

    <system.webServer>
        <!-- ... other tags here ... -->
        <defaultDocument enabled="false" />
    </system.webServer>
    

    执行此操作后,默认文档将不再添加到您的网址中。但是被警告,因为它不再是活动的,你不能依赖default.aspx实际映射到你的目录,你必须手动处理它或使用像System.Web.Routing这样的东西来处理这个功能

    要在IIS 6中完成相同操作,您需要打开通配符:

    以下说明适用于IIS 6.

    1. 打开IIS并右键单击网站并选择“属性”。
    2. 单击“应用程序设置”部分下的“配置”按钮
    3. 单击“插入...”按钮以创建新的通配符映射
    4. 将可执行文本框设置为aspnet_isapi.dll文件位置。 for .net 2.0,3.0,3.5:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll
    5. 确保未选中“验证文件是否存在”复选框。
    6. 按“确定”确认并关闭所有窗口。
    7. 注意:顺便说一下,我上面链接的网站上的所有资源都可用,因为你很好奇我是如何做事的。