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 をクラシック モードのままにしておく必要がありました。

完全な IIS ではなく IISExpress で実行している場合でも、次の手順でアプリケーションをクラシック モードに変更できます。

  1. ソリューション エクスプローラーで Web プロジェクトをクリックします。
  2. F4 キーを押して、プロパティ ページを表示します。完全な複数タブのプロパティ ページではなく、小さなプロパティ ウィンドウが必要です。
  3. 「マネージド パイプライン モード」ドロップダウンを見つけて、これを「クラシック」に変更します。
于 2013-05-29T19:28:27.240 に答える