我處理遺留傳統的ASP應用程序,我想,以防止與下劃線「」開頭的文件,從通過瀏覽器請求被檢索。理想我想以「」開始顯示未發現異常404的任何文件。web.config中請求篩選,阻止文件_
原因是我不想用.Inc擴展名來命名我的文件,因爲它使我在開發過程中非常痛苦,因爲我在Visual Studio中使用語法突出顯示,intellisense和其他東西。
由於這是在IIS8運行,有沒有什麼辦法可以過濾ASP處理程序處理頁面之前阻止這些文件的要求?
我處理遺留傳統的ASP應用程序,我想,以防止與下劃線「」開頭的文件,從通過瀏覽器請求被檢索。理想我想以「」開始顯示未發現異常404的任何文件。web.config中請求篩選,阻止文件_
原因是我不想用.Inc擴展名來命名我的文件,因爲它使我在開發過程中非常痛苦,因爲我在Visual Studio中使用語法突出顯示,intellisense和其他東西。
由於這是在IIS8運行,有沒有什麼辦法可以過濾ASP處理程序處理頁面之前阻止這些文件的要求?
臨時答案:
我在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爲上....
您不必使用'INC '作爲文件擴展名,只需保留.asp標準擴展名即可。如果你覺得必須,你可以隨時重新命名。 – Paul
是的,但如果它的.asp可以加載在瀏覽器中,這是不希望的,我寧願不重命名。只想設置一次,忘記它的一種交易。下面我想到的東西很棒,只是希望有一種非破解的方式。將會有一百個左右,所以重命名它們並且一直命名它們會很乏味。 –
如果你擔心在瀏覽器中啓動頁面則僅包括功能和/或潛艇在文件中,或者包含某種頁開始的陷阱。 – Paul