我需要在几个 ASP.NET 应用程序中限制对静态 HTML 文件的访问。由于这些应用程序实现了自己的身份验证机制,看起来我只需要让这些文件通过 ASP.NET 请求处理管道而不是“标准”IIS 静态内容处理。一些应用程序是相对现代的 ASP.NET MVC 应用程序,并在 IIS 7.5 上使用集成管道,看起来为它们做我需要的事情并不是什么大不了的事。但其他是在经典管道模式 (IIS 7.5) 上工作的旧版 ASP.NET 网站,由于某些原因,目前无法将它们移动到集成管道。
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
那么我做错了什么?谁能指出我正确的方法?