从URL查询字符串

时间:2014-04-15 21:38:15

标签: c# url query-string

我有一个应用程序URL,可以从浏览器启动并传入查询字符串。

我的开发网址

http://localhost:15094/MyPage.html?user=username&role=admin

客户端网址将是硬盘中MyPage.html的路径

file:///C:/Program%20Files/Client/MyPage.html?user=username&role=admin

当url是带有http的localhost时,我可以使用

提取查询字符串
System.Windows.Browser.HtmlPage.Document.DocumentUri.Query
// this gives me ?user=username&role=admin 
// from http://localhost:15094/MyPage.html?user=username&role=admin

但我想要?user = username& role = admin当客户使用网址

file:///C:/Program%20Files/Client/MyPage.html?user=username&role=admin

我想,System.Windows.Browser.HtmlPage.Document.DocumentUri.Query无法使用它。

请注意,开发URL是使用http,当应用程序安装在客户端的计算机上时,该URL将没有http,这就是应用程序的工作方式。请不要建议在IIS等中托管它。

我的问题非常简单:

如何从" 文件中提取查询字符串:/// C:/Program%20Files/Client/MyPage.html?user = username& role = admin &#34 ; ? 如果System.Windows.Browser.HtmlPage.Document.DocumentUri.Query适用于没有http的url,为什么我没有得到查询字符串呢?

1 个答案:

答案 0 :(得分:1)

一种不聪明的简单方法是使用IndexOf,例如:

var originalUrl = "file:///C:/Program%20Files/Client/MyPage.html?user=username&role=admin";
var extractedQueryString = string.Empty;
if(originalUrl.IndexOf("?") != -1)
{
   extractedQueryString = originalUrl.Substring(originalUrl.IndexOf("?"));
}

在没有编译的情况下写下我的头脑,但我认为我做对了。

如果您想知道的话,还要获取字符串的文件名部分:

var extractedFileName = originalUrl.Substring(0, originalUrl.IndexOf("?"));