Asp.net mvc 仅向授权用户提供ASP.NET中的静态文件

Asp.net mvc 仅向授权用户提供ASP.NET中的静态文件,asp.net-mvc,asp.net-mvc-5,iis-7,Asp.net Mvc,Asp.net Mvc 5,Iis 7,我正在尝试保护我的项目下的一个文件夹,其中只有一些静态文件,它们是.htm和.js文件的组合。我尝试过创建一个自定义的HttpHandler,比如: public class StaticFilesHttpHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { if (context.Request.IsAuthenticated) {

我正在尝试保护我的项目下的一个文件夹,其中只有一些静态文件,它们是
.htm
.js
文件的组合。我尝试过创建一个自定义的
HttpHandler
,比如:

public class StaticFilesHttpHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        if (context.Request.IsAuthenticated)
        {
            // continue with the request
        }
        else
        {
            throw new HttpResponseException(HttpStatusCode.Unauthorized);
        }
    }

    public bool IsReusable => false;
}
然后通过
route.Config

routes.RouteExistingFiles = true;
routes.Add("helpRoute", new Route("folder/*.htm", new StaticFilesRouteHandler ()));
和一个路由处理程序来提供

public class StaticFilesRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext context)
    {
        return new StaticFilesHttpHandler ();
    }
}
也可以通过
system.webServer

<handlers>
  <add name="StaticFileHandler" verb="GET" path="~/help/default.htm" type="StaticFilesHttpHandler "/>
</handlers>


文件夹中的文件由第三方提供。我将调用文件夹中js文件中的函数,然后将用户重定向到其子结构中的适当.htm文件。我不希望用户能够键入url并访问任何文件。我做错了什么?

能否将类型更改为TransferRequestHandler并确保路径正确

<handlers>
  <add name="StaticFileHandler" verb="GET" path="~/help/default.htm" type="TransferRequestHandler" />
</handlers>


在global.asax文件中,您可以访问应用程序_BeginRequest中的请求,以验证请求是否经过身份验证。

请参阅@NightOwl888,它将取消对这些文件的所有访问。我仍然希望用户能够访问这些文件,但前提是他们得到授权。你说得对。你应该看到,当我尝试访问目录时,即使我登录了,访问也会被拒绝。我认为原因是我们使用.NET身份验证。