我有一个应用程序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,为什么我没有得到查询字符串呢?
答案 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("?"));