2

私は http ハドラーを使用しようとしているので、クラス ライブラリー プロジェクトを作成し、次のコードを追加しました。

 namespace MyProject.Handlers
{
    public class Class1 : IHttpHandler
    {
        public bool IsReusable
        {
            get { return false; }
        }

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Write("Hello from custom handler.");
        }
    }
}

次に、それをコンパイルすると、MyProject.Handlers.dll ファイルが生成されました。それをasp.netのbinフォルダーに入れて、これをasp.netに追加しました

<system.webServer>
    <handlers>
        <add name="TutorialHandler" verb="*" path="*" type="MyProject.Handlers.Class1, MyProject.Handlers" modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="File" />
    </handlers>
<modules runAllManagedModulesForAllRequests="true">
    //some stuff I *think* it doesn't make a difference
</modules>
//some stuff I *think* it doesn't make a difference
</system.webServer>

<system.web>
 <httpHandlers>
      <add verb="*" path="*" type="MyProject.Handlers.Class1, MyProject.Handlers" />
    </httpHandlers>
  </system.web>

しかし、それは呼び出されません!デバッガーを起動し、ブレークポイントを設定しましたが、停止しません。firebug で出力 html を確認すると、「Hello from custom handler」という文がありません。

私は何を間違っていますか?

ありがとう、オスカー

編集: フレームワーク 4.0、IIS7 を使用しています。ルートを使用している可能性がありますか?(index.aspx を直接呼び出すのではなく、/home などを呼び出すのですか?)

4

1 に答える 1

0

何らかの理由で、ハンドラーリストの最後にあるときに呼び出されていませんでした。トップに移動し、webresources.axdに関して奇妙なエラーが発生しました。その理由はpath="*"でした。ルートを使用しているため、一致するパスが見つかりませんでした。

最後に、間違ったツールを使用していることに気付きました。場合によっては出力に追加したいので、モジュールはハンドラーではなく、私にとって正しいものでした。そこで、代わりにモジュールを使用するようにアプローチを変更しました。コメントで私を助けてくれたすべてに感謝します!

于 2013-01-07T17:31:45.133 に答える