【发布时间】:2010-04-05 11:22:09
【问题描述】:
Request.RawUrl 总是返回 /default.aspx 变体。我没有找到任何方法 来区分这些网址。有人知道该怎么做吗? 环境是 IIS 7 上的 .NET 3.5SP1。
【问题讨论】:
标签: asp.net iis iis-7 url-rewriting
Request.RawUrl 总是返回 /default.aspx 变体。我没有找到任何方法 来区分这些网址。有人知道该怎么做吗? 环境是 IIS 7 上的 .NET 3.5SP1。
【问题讨论】:
标签: asp.net iis iis-7 url-rewriting
在设计我的URL Rewriter 时,我实际上不得不解决同样的问题。它与您甚至可以访问 URL 之前发生的过程有关。要解决这个问题,您必须确保在 IIS 7 中默认页面处理已关闭。因为如果没有默认页面处理,它不会经历尝试将其映射到驱动器的额外步骤,因此您将是请求的确切 URL。但这可能是也可能不是一个选项,具体取决于您是否使用System.Web.Routing。
要关闭默认页面处理,您需要执行以下操作:
或者您可以将以下内容添加到您的web.config:
<system.webServer>
<!-- ... other tags here ... -->
<defaultDocument enabled="false" />
</system.webServer>
执行此操作后,默认文档将不再添加到您的 URL。但是请注意,由于它不再处于活动状态,因此您不能依赖 default.aspx 实际映射到您的目录,您必须手动处理此问题或使用 System.Web.Routing 之类的东西来处理此功能.
要在 IIS 6 中完成相同的操作,您需要打开通配符:
以下说明适用于 IIS 6。
注意:顺便说一句,所有源代码都可以在我上面链接的网站上找到,以防你好奇我是如何做事的。
【讨论】:
<system.web/> 设置。然而,Cassini 通常可以很好地判断您将在 IIS 7 中看到的内容,因为它是一个纯 .NET 引擎,但它仍然有一些用于 default.aspx 和 index.aspx 的硬编码,因此应用程序 just work(tm ) 从 Visual Studio 为旧的 ASP.NET 应用程序运行它们时。但是,如果您只是从目录中删除文件,则可以强制它识别没有 default.aspx 的 URL。
<asp:form/> 如何选择呈现 URL 有几个选项,我已经有一段时间没有搞砸了。在 IIS 6 中使用 <rewriter rebaseClientPath="true|false" />。我忘记了您是否真的希望true 或false 更改<asp:form/> 的URL。它基于这种方法:msdn.microsoft.com/en-us/library/1kz7fdx9(v=VS.90).aspx 但是在 IIS 7 中我认为它可以正常工作,因为TransferRequest,但请不要引用我的话。