0

我试图重写 .aspx 页面的 URL,但我总是发现这个错误:

错误 500.23:ASP.NET httpHandlers 配置不适用于托管管道模式。

前提:我正在使用 Visual Studio 2012 和 c#

web.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <httpHandlers>
            <add verb="*" path="viaggi/*.aspx" type="mioRewrite, mioRewrite"/>
        </httpHandlers>
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5" />
    </system.web>
    <appSettings>
        <add key="strConn" value="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\db_viaggi.mdf;Integrated Security=True" />
    </appSettings>
</configuration>

由类 IHttpHandlerFactory 继承的类 mioRewrite

public class mioRewrite : IHttpHandlerFactory
{
    public IHttpHandler GetHandler(HttpContext context, string requestType, string URL, string pathTranslated)
    {
        classe HttpContext
        context.Items["fileName"] = Path.GetFileNameWithoutExtension(URL).ToLower();

        return PageParser.GetCompiledPageInstance(URL, context.Server.MapPath("viaggi.aspx"), context);
    }

    public void ReleaseHandler(IHttpHandler handler) { }
}

我使用了这种方法,因为一些示例谈到了它。

我需要做什么来解决这个错误,并创建一个 URL 重写方法?

4

1 回答 1

2

该错误为您提供了线索。与其以集成模式运行 IIS,不如以经典模式运行。

有趣的是,这是我的公司已向 Microsoft 开票的问题。IIS 工程师确认这似乎是一个错误,无法提供解决方案。如果使用无扩展路由和重写规则,我们必须让 IIS 处于经典模式。

如果在 IISExpress 而不是完整的 IIS 中运行,您仍然可以通过以下步骤将应用程序更改为经典模式:

  1. 单击解决方案资源管理器中的 Web 项目
  2. 按 F4 以显示属性页面。您不想要完整的多选项卡属性页面,而是想要小的属性窗口。
  3. 找到“托管管道模式”下拉菜单并将其更改为“经典”
于 2013-05-29T19:28:27.240 回答