GET请求取消视频文件。无法找到视频

时间:2014-02-03 13:28:13

标签: c# asp.net fancybox html5-video http-get

我有一个包含以下HTML的Webform:

<body>
    <form id="form1" runat="server">
    <div>
        <video style="width: 100%;" controls autoplay>
            <source src="<%= this.MP4 %>" type="video/mp4">
            <source src="<%= this.OGV %>" type="video/ogg">
            <source src="<%= this.WEBM %>" type="video/webm">
        Your browser does not support the video tag.
        </video>
    </div>
    </form>
</body>

此页面在fancybox窗口中打开,相应的视频文件通过url参数(video.aspx?video=filename)提供,该参数后面的代码中构建了文件的路径。

当我在Visual Studio 2012本地试用时,一切正常。此外,如果我直接通过URL调用文件,例如:http://localhost:52916/_video/filename.webm它也可以。

以下是代码:

protected void Page_PreRender(object sender, EventArgs e)
{
    MP4 += Request.QueryString["video"] + ".mp4";
    OGV += Request.QueryString["video"] + ".ogv";
    WEBM += Request.QueryString["video"] + ".webm";
}

但是在实时服务器上无法找到视频(404),如果直接调用,当我检查Chrome控制台时,我可以看到所有视频文件的GET请求都被取消。

页面是否在fancybox窗口中打开或者如果我直接打开它没有任何区别,它仍然无法正常工作。我也尝试了已经填写的文件的路径,而不是以编程方式进行。

我发现有几个人似乎有同样的问题,但没有一个解决方案有效。

2 个答案:

答案 0 :(得分:1)

设置时,您应该对视频文件名(实际视频网址)进行编码。如果您通过后面的代码直接设置文件名,则Server.URLEncode应该有效。如果您要将文件名发送到js函数,而js函数依次使用AntiXss librarie的JavaScriptEncode函数。

希望这有帮助。

答案 1 :(得分:1)

如果它在本地工作但不能正常工作,则问题可能是实时Web服务器未配置为提供这些文件类型。尝试在system.webServer条目下的web.config中添加它:

<staticContent>
    <mimeMap fileExtension=".ogg" mimeType="application/ogg" />
    <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
    <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
    <mimeMap fileExtension=".webm" mimeType="video/webm" />
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>

IIS的某些版本中,未知的文件扩展名(例如oggwebm)将导致404,这就是您必须定义mime类型的原因。