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