【问题标题】:ASP.NET Routing (in WebForms) not working when deployed under IIS, works in IDEASP.NET 路由(在 WebForms 中)在 IIS 下部署时不起作用,在 IDE 中有效
【发布时间】:2011-01-28 09:36:34
【问题描述】:

我有一个在 VS 2008 中开发的 ASP.NET web 应用程序(webforms,不是 MVC),我已经通过这个链接 http://www.4guysfromrolla.com/articles/051309-1.aspx#postadlink 实现了 ASP.NET web 表单 URL 路由

当我在 Visual studion IDE 上运行它时效果很好。但是当我在我的 IIS(XP 中的 IIS 5.1)下创建一个站点并在那里部署相同的文件时它不起作用。我也在我的应用程序的“属性”窗口中将 ASP.NET 版本设置为 2.0。但不起作用。知道为什么吗?还有什么要设置的吗?

【问题讨论】:

    标签: asp.net url url-routing


    【解决方案1】:

    尝试使用“在不同版本的 IIS 中使用 ASP.NET MVC”@http://www.asp.net/%28S%28ywiyuluxr3qb2dfva1z5lgeg%29%29/learn/mvc/tutorial-08-cs.aspx 中的以下内容

    创建通配符脚本映射
    如果您不想修改 ASP.NET MVC 应用程序的 URL,并且您可以访问您的 Web 服务器,那么您还有一个额外的选择。您可以创建一个通配符脚本映射,它将对 Web 服务器的所有请求映射到 ASP.NET 框架。这样,您可以在 IIS 7.0(经典模式)或 IIS 6.0 中使用默认的 ASP.NET MVC 路由表。

    请注意,此选项会导致 IIS 拦截对 Web 服务器发出的每个请求。这包括对图像、经典 ASP 页面和 HTML 页面的请求。因此,启用通配符脚本映射到 ASP.NET 确实会影响性能。

    按照以下步骤使用 IIS 6.0 创建通配符脚本映射:
    1. 右键单击​​网站并选择属性
    2. 选择主目录选项卡
    3. 点击配置按钮
    4. 选择映射选项卡
    5. 单击插入按钮(见图 4)
    6. 将 aspnet_isapi.dll 的路径粘贴到 Executable 字段中(您可以从 .aspx 文件的脚本映射中复制此路径)
    7. 在扩展字段中输入“.*”
    8. 取消选中标记为“验证文件是否存在”的复选框
    9. 点击确定按钮

    【讨论】:

    • 它适用于 ASP.NET MVC - 不确定 WebForms。理想情况下,它应该可以工作,因为它是核心 ASP.NET 的一部分。
    • 我希望我在 3 小时前读过这个!!!最重要的是取消选中“验证该文件是否存在”。没有它就没有路由工作!!!
    【解决方案2】:
    【解决方案3】:

    您是要为特定的文件扩展名重写,还是要路由所有请求?

    我问的原因是因为您可能无法在 IIS 5.1 上使用通配符路由。

    如果您为 ASP.NET ISAPI 过滤器指定通配符映射,它适用于 IIS6。 Link with more info

    IIS7 通过集成管道支持这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-02
      • 2011-05-24
      • 2019-05-12
      • 1970-01-01
      • 2018-01-12
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多