2016-02-19 77 views
0

我處理遺留傳統的ASP應用程序,我想,以防止與下劃線「」開頭的文件,從通過瀏覽器請求被檢索。理想我想以「」開始顯示未發現異常404的任何文件。web.config中請求篩選,阻止文件_

原因是我不想用.Inc擴展名來命名我的文件,因爲它使我在開發過程中非常痛苦,因爲我在Visual Studio中使用語法突出顯示,intellisense和其他東西。

由於這是在IIS8運行,有沒有什麼辦法可以過濾ASP處理程序處理頁面之前阻止這些文件的要求?

+1

您不必使用'INC '作爲文件擴展名,只需保留.asp標準擴展名即可。如果你覺得必須,你可以隨時重新命名。 – Paul

+0

是的,但如果它的.asp可以加載在瀏覽器中,這是不希望的,我寧願不重命名。只想設置一次,忘記它的一種交易。下面我想到的東西很棒,只是希望有一種非破解的方式。將會有一百個左右,所以重命名它們並且一直命名它們會很乏味。 –

+0

如果你擔心在瀏覽器中啓動頁面則僅包括功能和/或潛艇在文件中,或者包含某種頁開始的陷阱。 – Paul

回答

1

臨時答案:

我在http處理程序中映射了兩次ASPClassic。首先我將它映射到_ *。asp。但是,我使用了一個無效的DLL爲asp dll,這將導致錯誤:

由於Web服務器上的ISAPI和CGI限制列表設置,您請求的頁面無法提供服務。

這是404.2

然後我映射正常* .asp的處理程序。

如果HttpHandler與請求相匹配,則不會傳遞給下一個HttpHandler。因此,匹配請求的第一個HttpHandler是get的使用。

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0"/> 
     <remove name="OPTIONSVerbHandler"/> 
     <remove name="TRACEVerbHandler"/> 
     <remove name="ASPClassic"/> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/> 
     <add name="ASPClassic_No" path="_*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll2" resourceType="File" /> 
     <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" /> 
    </handlers> 
</web.Server> 

此外,由於SSI不取決於請求,所以服務器端仍包含這些文件。

如果有人知道一個更清潔,這樣做的非哈克的方式,我所有的耳朵!

我就是用這個asp文件做在此之前:

<% 
    notFound_fullName = Request.ServerVariables("SCRIPT_NAME") 
    notFound_pathArray = split(notFound_fullName, "/") 
    notFound_fname = notFound_pathArray(UBOUND(notFound_pathArray)) 
    If (InStr(1, notFound_fname, "_") = 1) Then 
    Response.Status ="404 Not Found" 
    Response.End 
    End If 
%> 

不過,我遇到了一個場景,我需要它包含一個頁面,其中包括它的頁面上,同時還包括它在被包含的頁面上。

E.g.

_cUser -> include 404handler code (alone with no other includes) 
_baseWebService -> Include _AllClasses (includes 404 handler again) 

一個不會與選項嚴謹的工作,原因是其要麼重新定義變量,或者變量沒有定義的,因爲Option Strict爲上....