【问题标题】:Maintaining ISAPI Rewrite Path with the ASP.NET tilde (~)使用 ASP.NET 波浪号 (~) 维护 ISAPI 重写路径
【发布时间】:2011-03-03 17:06:23
【问题描述】:

我的团队正在从 ASP.NET 3.5 升级到 ASP.NET 4.0。我们目前正在使用 Helicon ISAPI Rewrite 将http://localhost/<account-name>/default.aspx 映射到http://localhost/<virtual-directory>/default.aspx?AccountName=<account-name>,其中<account-name> 是一个查询字符串变量,<virtual-directory> 是一个虚拟目录(自然)。

在升级之前,波浪号 (~) 解析为 http://localhost/<account-name>/...(我希望它这样做),升级后波浪号解析为 http://localhost/<virtual-directory>/...,这会导致错误,因为需要 <account-name> 查询字符串。

我想避免走上用相对路径替换所有内容的道路,因为我们的系统中有几个功能使用整个 URL 而不仅仅是相对路径。

值得我在 Windows 7 中使用 IIS7、带有 ASP.NET 4.0 的 Visual Studio 2010 和 64 位 Helicon ISAPI Rewrite。如果我切换回 ASP.NET 3.5 版本,那么它仍然可以正常工作(让我相信 IIS 中没有任何变化,除非它在 ​​4.0 应用程序池中 - 当我在 3.5 和 4.0 之间来回切换时,我必须更改应用程序池在 IIS 中)。

有什么想法吗?提前致谢!

【问题讨论】:

    标签: asp.net iis .net-4.0 isapi-rewrite tilde


    【解决方案1】:

    IIS 7 具有不错的 http 重定向支持。所以你可能不再需要使用那个 ISAPI 过滤器了

    http://technet.microsoft.com/en-us/library/cc732969(WS.10).aspx

    另一种使用 ISAPI 的方法是使用 HTTP 模块重定向。

    http://weblogs.asp.net/fmarguerie/archive/2004/11/18/265719.aspx

    【讨论】:

    • 感谢您的链接!不幸的是,我们团队中仍有一些开发人员以及一些仍在使用 IIS6 的服务器,因此在他们升级之前,我们可能需要坚持使用 Helicon ISAPI。
    • 谢谢!我希望坚持使用 Helicon,这样我们就不必迁移和测试所有的重写。但如果涉及到这一点,那么很高兴知道我可以使用 HTTP 模块重定向。我也很好奇根本问题是什么。也许 .NET 4.0 不能很好地与 Helicon 配合使用......如果是这样的话,那么 HTTP 模块重定向听起来像是要走的路。
    • 这是你的电话.. 但我无法想象维护 isapi 过滤器是那么容易,因为 HTTP 模块是托管的 .net 代码。提供更大的灵活性和更容易的维护,因此可能值得研究..
    • ISAPI 重写非常容易维护。所有重写规则都放在一个文本文件中,该文件位于 Web 文件夹根目录中。它像其他所有东西一样受到源代码控制和部署。
    猜你喜欢
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 2011-11-03
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多