【问题标题】:Extensionless Page Requests无扩展页面请求
【发布时间】:2009-12-17 15:08:37
【问题描述】:

我们的一位客户发送了一份引用我的网站的出版物,但他们使用了错误的地址...他们没有提供页面名称...看起来像这样:

mywebsite.org/Resources/toolkits/bridging

应该是什么时候

mywebsite.org/Resources/toolkits/bridging/default.aspx

有没有办法告诉 ASP.NET 在看到这种请求时默认使用这个 default.aspx,或者更好的是,IIS 7 可以轻松处理这个吗? 这个网站是实时的,所以我想尽可能避免引入代码。

【问题讨论】:

    标签: asp.net request


    【解决方案1】:

    根据其他建议,应该使用 IIS 管理工具在您的网站的 IIS 配置中完成。

    但是,还有另一种选择 - 您可以在实际 ASP.NET 应用程序的 web.config 中添加一个部分,从而允许您直接从应用程序覆盖 IIS 配置:

    <system.webServer>
        <defaultDocument>
            <files>
                <clear />
                <!-- Specify each of your files by order of preference here -->
                <add value="Default.aspx" />
                <add value="Index.aspx" />
                <add value="MyOtherPage.aspx" />
            </files>
        </defaultDocument>
    </system.webServer>
    

    但需要注意的是,当 IIS 管理员无法弄清楚为什么服务器配置无法按照他的配置方式工作时,它可能有点迟钝。仅仅因为你可以做某事并不总是正确的。

    最后,以防万一您无权访问 IIS 服务器,或者您的 IIS 管理员有理由不将 Default.aspx 添加到 IIS 配置中的默认文档列表中,并且无论出于何种原因,您都不希望这样做覆盖 web.config 文件中的 IIS 配置,那么最快和最简单的方法是在该目录中创建一个名为 default.asp 的文件,其中包含:

    <% Response.Redirect("default.aspx") %>
    

    Default.asp 在 IIS 上的默认文档列表中。该代码将自动将调用重定向到正确的页面。不过,这种方法的缺点是会影响性能 - 每次有人直接或以其他方式调用 default.asp 时,都需要进行重定向,这不是免费的。

    【讨论】:

    • 本,就其价值而言,我认为您对那里的警告是错误的。 IMO,您的解决方案是 spot-on,无需警告。这种类型的东西应该在应用程序的配置中......正是你提出的。
    • 我倾向于认为这并不一定遵循 IIS 管理员最不意外的原则。我同意这应该是特定于应用程序的东西,而不是 Web 服务器。那么也许这个不应该在网络服务器中设置(也不能设置)?我想只是把它作为旁注扔掉......
    【解决方案2】:

    在 IIS 网站属性的“文档”选项卡中,您可以指定默认文档。如果您在该机器上使用 .Net2.0 或更高版本,则应该已经设置 Default.aspx....

    【讨论】:

      【解决方案3】:

      奇怪的是,Default.aspx 没有设置为 IIS 安装中的默认文档;在 IIS 7 中,该设置位于“HTTP 功能”下,称为“默认文档”。将 default.aspx 添加到该列表中,您应该没问题。

      如果没有,您需要添加一个 404 处理程序,以便在看到该 URL 时进行重定向。

      【讨论】: