2011-10-25 42 views
1

我已經創建了一個非常簡單的ASP.NET HttpHandler,並且出於某種原因,除非用戶登錄,否則不會調用它。我已將其分配爲處理PNG圖像。對於第一次訪問該網站的訪問者來說,處理程序不會被調用。他們登錄後,它被稱爲。我在經典模式下使用Windows 7上的.NET 4,IIS7。請求的PNG圖像不存在於文件目錄中。除非有會話,否則不會調用ASP.NET HttpHandler

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

你肯定不需要硬編碼像路徑這在web.config中:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll –

+0

web.config上的安全設置是什麼? –

+0

@Davide,我會用什麼路徑? – Ron

回答

1

首先,如果您是在經典模式下使用IIS7,您必須在兩個地方設置配置:link

你也需要從認證排除您的處理程序:

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

UPDATE

確定,這裏就是我的意思是:

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

您可能在此處查看某個內容,但沒有IHttpHandler的URL。 – Ron

+0

是的。這是路徑=>'路徑=「*。PNG」' – Aliostad

+0

謝謝,這解決了它,但我想還是有點困惑。如果我在路徑中放置實際圖像,它將顯示沒有位置設置(通過正常的http請求)。但是,如果圖像文件不存在,則需要調用http處理程序的位置。所以,現在看來,我必須爲所有可能的圖像路徑設置一個位置設置。雖然,如果我有真實的圖像文件,他們工作正常,沒有身份驗證。奇怪。 – Ron

相關問題