gpt4 book ai didi

c# - 什么是在 C# (ASP.net) 中对查询字符串进行重复数据删除的最快方法

转载 作者:行者123 更新时间:2023-11-30 14:44:25 25 4
gpt4 key购买 nike

我有一个问题,公司使用业务跟踪系统捕获用户的首次访问并将他们重定向到他们试图访问的页面,但附加了引荐来源网址...现在,由于 referer URL 带有该人试图访问的 url(不要问为什么,我不知道)它使我拥有每个值的副本。

所以访问这个...

home.aspx?test=test&test2=test2

成为

home.aspx?test=test&test2=test2&referrerurl=home.aspx?test=test&test2=test2

现在,对引荐来源网址进行 URL 编码可以解决问题,但我更有可能被 gorilla 骚扰;所以问题来了。如何对 .QueryString 的输出进行重复数据删除?

目前我正在使用这个...

private string queryClean(string entity)
{
try
{
if(Request.QueryString["referrerUrl"] != null){
string[] Split = entity.Split(new Char[] { ',' });
string tmpValue = Convert.ToString(Split[0]);

return tmpValue;
}else{ return entity; }
}
catch (Exception cleanError)
{
errors.Text += "-clean-" + cleanError + "-endclean-";
return entity;
}

}

(忽略 try/catch,我们有应用级错误捕获,但我仍在使用它)。

我正在使用 C# .net 2

谢谢


[附加信息]

reffererURL 将始终位于字符串的末尾,因此在此之后可以删除所有查询字符串吗?

我试过用

string test = Convert.ToString(Request.QueryString);
string[] tRSplit = Regex.Split(test, "&referrerUrl");
Response.Write(tRSplit[0]);

和...

System.Collections.Generic.List<string> testb = new System.Collections.Generic.List<string>(Convert.ToString(Request.QueryString).Split('&'));
for (int i = 0; i < testb.Count; i++)
{

Response.Write(i +": "+ testb[i].ToString()+"<br><br>");
}

两者仍然产生重复


我可以使用 Trim但是有没有一种更清洁/更快的方法来实现这一目标。

最佳答案

像这样的东西应该可以工作:

NameValueCollection fixedQueryString = new NameValueCollection();
foreach (string key in Request.QueryString.Keys)
{
string value = Request.QueryString[key];
if(value.Contains(","))
{
value = value.Split(',')[0];
}
fixedQueryString.Add(key, value);
}

此代码将创建一个新的 NameValueCollection,我们在其中重建查询字符串。然后我们检查每个值的 a ,这通常表示一个值重复了不止一次。例如,url home.aspx?test=test&test2=test2&referrerurl=home.aspx?test=test&test2=test2 将为查询字符串值“test”生成值“test, test”。

关于c# - 什么是在 C# (ASP.net) 中对查询字符串进行重复数据删除的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/506636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com