我有一个包含以下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窗口中打开或者如果我直接打开它没有任何区别,它仍然无法正常工作。我也尝试了已经填写的文件的路径,而不是以编程方式进行。
我发现有几个人似乎有同样的问题,但没有一个解决方案有效。
答案 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的某些版本中,未知的文件扩展名(例如ogg
,webm
)将导致404,这就是您必须定义mime类型的原因。