【发布时间】:2013-02-03 12:11:00
【问题描述】:
我需要在几个 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
那么我做错了什么?谁能指出我正确的方法?
【问题讨论】:
标签: asp.net iis-7 static-content