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,为什么我没有正确获取查询字符串?
一个不聪明的简单方法是使用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("?"));