繁体   English   中英

带有视频文件的.NET Nancy响应(自行托管)

[英].NET Nancy response with a video file (self hosting)

我正在使用Nancy(版本1.4.4)基于REST体系结构在.NET上编写自托管服务器。 我更喜欢进行自我托管(Nancy.Hosting.Self为1.4.1版),其中一项要求功能是使用视频文件响应请求。 为了使画面清晰,我的伙伴编写了React应用程序,他需要此视频。

我尝试了不同的选择:

首先,我尝试使用Response.AsFile()但是当我尝试通过链接访问它时,我得到404标签为“找不到您所请求的资源”。 我不知道为什么

public class HelloModule : NancyModule
{
    public HelloModule()
    {
        Get["/"] = parameters =>
        {
            return Response.AsFile(@"C:\7\video112018.mp4","video/mp4");
        };
    }
}

第二个变种是像下面的代码一样使用GenericFileResponce ,但这会导致相同的问题:

public class HelloModule : NancyModule
{
    public HelloModule()
    {
        Get["/"] = parameters =>
        {
            GenericFileResponse fileResponse = new GenericFileResponse(@"C:\7\video112018.mp4");
            return fileResponse;
        };
    }
}

我尝试的最后一个选择是直接写入响应流,如下面的代码所示,但是在这种情况下会出现错误“指定的网络名称不再可用”。 棘手的是,有时会发生此错误,但我没有发现它来自哪里的任何依赖关系...

public class HelloModule : NancyModule
{
    public HelloModule()
    {
        Get["/"] = parameters =>
        {
            return new Response
            {
                ContentType = "video/mp4",

                Contents = s =>
                {
                    String fileName = @"C:\7\video112018.mp4";
                    using (var stream = new FileStream(fileName, FileMode.Open))
                        stream.CopyTo(s);
                    s.Flush();
                    s.Close();
                }
            };
        };
    }
}

如果您对这些解决方案有任何建议或提出其他建议,我将不胜感激。

PS我也尝试发送图像,它可以使用第三种方法,但不能使用第一种或第二种方法

PPS并不严格地判断代码,因为这只是示例)

通过执行以下操作,我能够进行非常基本的视频文件流传输:

Get["/"] = p =>
{
    var file = new FileStream(@"PATH_TO_FILE", FileMode.Open);
    return new StreamResponse(() => file, "video/mp4");
}

这样可以播放视频文件,但是没有进行搜索。

最后我找到了这个帖子。 添加这些扩展名可以搜索视频。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM