2011-10-25 6 views
1

非常に単純なASP.NET HttpHandlerを作成しましたが、何らかの理由でユーザーがログオンしていないと呼び出されません。私はそれをPNG画像を扱うように割り当てました。ウェブサイトへの初めての訪問者にとって、ハンドラは呼び出されない。ログオンした後、それが呼び出されます。私は、クラシックモードでWindows 7で.NET 4、IIS 7を使用しています。要求されたPNG画像がファイルディレクトリに存在しません。私は私のweb.configファイルでASP.NET HttpHandlerはセッションがない限り呼び出されません

namespace MyNS 
{ 
    public class MyHttpHandler : IHttpHandler 
    { 
     public bool IsReusable { get { return true; } } 
     public void ProcessRequest(HttpContext context) 
     { } 
    } 
} 

、あなたはクラシックモードでIIS7を使用している場合...

<system.webServer> 
    <handlers> 
    <add name="MyPNG" path="*.png" verb="*" type="MyNS.MyHttpHandler" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,bitness64" /> 
    </handlers> 
</system.webServer> 
+0

あなたは確かのようなパスをハードコーディングする必要はありません。 C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll –

+0

web.configのセキュリティ設定とは何ですか? –

+0

@Davide、どのようなパスを使用しますか? – Ron

答えて

1

まず第一に、次の2つの場所でのセットアップ設定しなければなりません:link

また、あなたが認証からハンドラーを除外する必要があります。ここに

<location path="myhandler URL"> 
      <system.web> 
        <authorization> 
          <allow users="*"/> 
        </authorization> 
      </system.web> 
</location> 

UPDATE

OKは、私が何を意味するかです:

<location path="*.png"> 
      <system.web> 
        <authorization> 
          <allow users="*"/> 
        </authorization> 
      </system.web> 
</location> 
+0

ここには何かがあるかもしれませんが、IHttpHandlerのURLはありません。 – Ron

+0

はいあります。これはpath => 'path =" *。png "' – Aliostad

+0

ありがとう、これは解決しましたが、少し混乱していると思います。パスに実際のイメージを置くと、ロケーション設定なしで(通常のhttpリクエストを介して)表示されます。しかし、イメージファイルが存在しない場合は、httpハンドラを呼び出すために場所が必要です。だから、私は今、すべての可能な画像パスのための場所設定を設定しなければならないようだ。一方、私は実際の画像ファイルがある場合、彼らは認証なしで正常に動作します。奇妙な。 – Ron