从C#问题调用浏览器中带有查询字符串的htm文件



我们正试图从C#控制台应用程序在firefox浏览器中打开一个htm文件。htm文件应该将视频文件的名称作为查询字符串参数,以便在浏览器中播放该文件。现在,视频文件和htm都是C#控制台应用程序的本地文件。

我们使用了以下代码:

var playerFile = Path.Combine(folderPath, "player.htm");
var medianame = Path.GetFileNameWithoutExtension(mediaFilename) + ".theora.ogv";
var url = string.Format("{0}?name={1}", playerFile, medianame);
System.Diagnostics.Process.Start(@"C:Program Files (x86)Mozilla Firefoxfirefox.exe", url);

url的格式应为

file:///D:/Projects/Tester/bin/Debug/Content/player.htm?name=Promo[39171369900].theora.ogv

但当firefox浏览器打开时,地址栏中会显示以下内容:

file:///D:/Projects/Tester/bin/Debug/Content/player.htm%3Fname=Promo%5B39171369900%5D.theora.ogv

自从?和[]在浏览器中打开时正在获取url编码,无法播放视频。如果%3F和%5B%5D被替换,文件将正常播放。

有人能提供任何帮助吗。

请使用Server.UrlDecode方法解码您的url

或者尝试使用System.Uri.UnescapeDataString

为了回答我自己的问题,我最终使用批处理文件打开htm文件并从C#应用程序调用批处理,将文件名作为参数传递给批处理,从而解决了这个问题。谢谢你的帮助。

最新更新