URL中的查询字符串

本文关键字:字符串 查询 URL | 更新日期: 2023-09-27 17:58:41

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

我的开发URL是

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

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

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

当url是localhost和http时,我可以使用提取查询字符串

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=用户名&role=admin当客户端使用URL 时

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

我想System.Windows.Browser.HtmlPage.Document.DocumentUri.Query不适用于它。

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

我的问题很简单:

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

URL中的查询字符串

一个不聪明的简单方法是使用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("?"));