2013-02-18 71 views
2

我需要在多個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 

那我做錯了嗎?任何人都可以指出我正確的方式嗎?

回答

0

我從來沒有嘗試過你的方法,但我也有一些FW 1.1,經典的ASP。和我的Web服務器上混合使用的現代Web應用程序我所做的是爲每個框架創建一個單獨的應用程序池。我在1.1創建的經典模式應用程序池上運行1.1,並在另一個應用程序池上運行現代應用程序:集成fw 4.0。經典的asp東西超出了這個問題的範圍。每個應用程序池都是自己的進程,因此使用更多應用程序池並沒有真正的缺點,例如,每個應用程序有1個應用程序池是完全可以接受的安全策略。

+0

當然,我們所有的應用程序都使用自己的應用程序池 - 每個應用程序一個,因此它們運行在不同的進程中。問題是應用程序包含一些靜態文件(幫助頁面),並且未經授權的用戶如果鍵入直接URL,則可以看到它們。我的任務是讓應用程序在這種情況下顯示登錄頁面。 – 2013-02-18 23:19:13