Asp.net mvc 如何在asp.net MVC中限制对视频文件的直接访问

Asp.net mvc 如何在asp.net MVC中限制对视频文件的直接访问,asp.net-mvc,Asp.net Mvc,在我的项目中,我有一个上载文件夹,用户在其中上载视频文件,然后通过HTML5视频播放器从该文件夹查看。但如果真实用户浏览www.mysite.com/Upload/videofilename.mp4,则也会显示视频。 我想限制对视频文件夹的直接访问。有什么办法吗?您有两种选择: 选项1: 在的RegisterRoute方法中使用IgnoreRoute语句 你的RouteConfig课程。 例如: public RouteConfig { public static void Regist

在我的项目中,我有一个上载文件夹,用户在其中上载视频文件,然后通过HTML5视频播放器从该文件夹查看。但如果真实用户浏览www.mysite.com/Upload/videofilename.mp4,则也会显示视频。 我想限制对视频文件夹的直接访问。有什么办法吗?

您有两种选择:

选项1:

在的RegisterRoute方法中使用IgnoreRoute语句 你的RouteConfig课程。 例如:

public RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("yourRoute");
    }
}
参考:

选项2:

拒绝Asp.NET web.Config中所有用户的取消访问权限。 Exmaple:


您有两个选择:

选项1:

在的RegisterRoute方法中使用IgnoreRoute语句 你的RouteConfig课程。 例如:

public RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("yourRoute");
    }
}
参考:

选项2:

拒绝Asp.NET web.Config中所有用户的取消访问权限。 Exmaple:



您必须在您的上传文件夹的web配置中设置隐藏段。您还可以通过IIS进行设置YourSite>Request Filtering>Hidden Segments。 设置隐藏段后,任何人都无法使用url访问文件

网络配置

 <security>
      <requestFiltering>
        <hiddenSegments>
          <add segment="Upload"/>
        </hiddenSegments>
      </requestFiltering>
    </security>

您必须在您的上传文件夹的web配置中设置隐藏段。您还可以通过IIS进行设置YourSite>Request Filtering>Hidden Segments。 设置隐藏段后,任何人都无法使用url访问文件

网络配置

 <security>
      <requestFiltering>
        <hiddenSegments>
          <add segment="Upload"/>
        </hiddenSegments>
      </requestFiltering>
    </security>

谢谢…它很有效。。。但有一个问题。对于大型视频文件,这种方法是否需要很长时间,因为在本代码中,您在内存流中读取视频文件。所以,对于大型视频文件,它需要很长时间吗?同样,它是异步发送字节到HTML5视频播放器,还是一次发送所有字节?有什么想法吗?是的…我用大视频文件测试过。。。由于加载需要很长时间,我们必须找到异步推送输出流的方法……我用1gb视频进行了测试,页面加载很快,但发现视频异步存在问题,因为内存流的写入速度较慢。您可以使用blobURL来优化加载时间。参考链接。这可能对你有帮助。我用blob url进行了测试。它在Edge和Firefox上运行良好。但是chrome给出了错误blob:net::ERR\u FILE\u NOT\u found谢谢…它可以工作。。。但有一个问题。对于大型视频文件,这种方法是否需要很长时间,因为在本代码中,您在内存流中读取视频文件。所以,对于大型视频文件,它需要很长时间吗?同样,它是异步发送字节到HTML5视频播放器,还是一次发送所有字节?有什么想法吗?是的…我用大视频文件测试过。。。由于加载需要很长时间,我们必须找到异步推送输出流的方法……我用1gb视频进行了测试,页面加载很快,但发现视频异步存在问题,因为内存流的写入速度较慢。您可以使用blobURL来优化加载时间。参考链接。这可能对你有帮助。我用blob url进行了测试。它在Edge和Firefox上运行良好。但是chrome给出了错误blob:net::ERR\u FILE\u NOT\u FOUND
    [Authorize]
    public ActionResult GetMedia()
    {
        string fn = Server.MapPath("~/Upload/1.mp4");
        var memoryStream = new MemoryStream(System.IO.File.ReadAllBytes(fn));
        return new FileStreamResult(memoryStream, MimeMapping.GetMimeMapping(System.IO.Path.GetFileName(fn)));
    }