我需要在多個ASP.NET應用程序中限制對靜態HTML文件的訪問。由於這些應用程序實現了自己的身份驗證機制,它看起來像我只需要讓這些文件通過ASP.NET請求處理管道而不是「標準」IIS靜態內容處理。一些應用程序是相對現代的ASP.NET MVC應用程序,並在IIS 7.5上使用集成管道,看起來不需要做任何我需要的東西。但其他人則是傳統的ASP.NET網站工作在傳統的管道模式(IIS 7.5)上,目前由於某些原因無法將它們移動到集成管道中。如何在IIS 7.5 Classic模式下限制對靜態文件的訪問
UPD:問題是應用程序包含一些靜態文件(幫助頁面),並且未經授權的用戶如果鍵入直接URL,則可以看到它們。我的任務是讓應用程序在這種情況下顯示登錄頁面。
添加一個處理器連接到Web.config文件:
<add name="StaticHTMLHandler" path="*.htm*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
引起了我剛拿到這個異常:
[HttpException (0x80004005): Failed to Execute URL]
System.Web.Hosting.ISAPIWorkerRequestInProcForIIS6.BeginExecuteUrl(String url, String method, String childHeaders, Boolean sendHeaders, Boolean addUserIndo, IntPtr token, String name, String authType, Byte[] entity, AsyncCallback cb, Object state) +4136452
System.Web.HttpResponse.BeginExecuteUrlForEntireResponse(String pathOverride, NameValueCollection requestHeaders, AsyncCallback cb, Object state) +653
System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) +279
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +12551795
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
那我做錯了嗎?任何人都可以指出我正確的方式嗎?
當然,我們所有的應用程序都使用自己的應用程序池 - 每個應用程序一個,因此它們運行在不同的進程中。問題是應用程序包含一些靜態文件(幫助頁面),並且未經授權的用戶如果鍵入直接URL,則可以看到它們。我的任務是讓應用程序在這種情況下顯示登錄頁面。 – 2013-02-18 23:19:13