除非有Session,否则不会调用ASP.NET HttpHandler

时间:2011-10-25 16:07:09

标签: .net session httphandler ihttphandler

我创建了一个非常简单的ASP.NET HttpHandler,由于某种原因,除非用户登录,否则不会调用它。我已将其指定为处理PNG图像。对于网站的第一次访问者,不会调用处理程序。登录后,它会被调用。我在经典模式下在Windows 7上使用.NET 4,IIS7。请求的PNG图像不存在于文件目录中。

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

在我的web.config中,我有......

<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>

1 个答案:

答案 0 :(得分:1)

首先,如果您在经典模式下使用IIS7,则必须在两个位置设置配置:link

您还需要从身份验证中排除处理程序:

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

更新

好的,这就是我的意思:

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