1

クラシック モードで IIS 7.5 を使用して静的ファイル (.pdf ファイル) でカスタム認証チェックを実行するために、aspnet_isapi.dll にマップされた HttpHandler があります。

void IHttpHandler.ProcessRequest(HttpContext context)
{
  if(!User.IsMember) {
    Response.Redirect("~/Login.aspx?m=1");
   }
  else {
     //serve static content
   }
}

上記のコードは、else ステートメントのロジックを除いて正常に動作します。else ステートメントでは、StaticFileHandler が要求を処理できるようにしたいだけですが、これを整理できませんでした。要求を通常の StaticFile 要求として処理するためにファイルを IIS に単純に「渡す」方法についての提案をいただければ幸いです。

4

1 に答える 1

4

質問に直接答えるには、 StaticFileHandler を作成してリクエストを処理します。

// Serve static content:
Type type = typeof(HttpApplication).Assembly.GetType("System.Web.StaticFileHandler", true);
IHttpHandler handler = (IHttpHandler)Activator.CreateInstance(type, true);
handler.ProcessRequest(context);

しかし、HTTP ハンドラーの代わりに HTTP モジュールを作成することをお勧めします。

public class AuthenticationModule : IHttpModule
{
    public void Dispose()
    {
    }

    public void Init(HttpApplication application)
    {
        application.AuthorizeRequest += this.Application_AuthorizeRequest;
    }

    private void Application_AuthorizeRequest(object sender, EventArgs e)
    {
        HttpContext context = ((HttpApplication)sender).Context;
        if (!User.IsMember)
            context.Response.Redirect("~/Login.aspx?m=1");      
    }
}
于 2012-07-07T00:18:30.180 に答える