ASP.NET 表單驗證預設僅管制 .aspx 等動態頁面,靜態檔案由 IIS 直接處理,繞過 ASP.NET 管線,導致授權規則失效。
aspnet_isapi.dll,副檔名輸入 .htm,取消「驗證檔案是否存在」<system.web>
<httpHandlers>
<add verb="*" path="*.htm" type="System.Web.UI.PageHandlerFactory" />
</httpHandlers>
<compilation>
<buildProviders>
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
</system.web>
<location path="SecureFolder">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
將應用程式集區設為 Integrated 模式,靜態檔案即會經過 ASP.NET 管線,僅需在 system.webServer/handlers 註冊即可,無需設定 ISAPI 對應。
若無特殊需求,建議直接將
.htm改為.aspx,部署無額外設定,維護成本最低。
完整設定後,靜態 HTML 將受 ASP.NET 驗證管制,未登入用戶將導向登入頁。