webdiyer来

cnlamar 2007-01-31 01:42:40
老哥,还记得我吧?最近用了你新版的分页控件,发现一个以前就存在的问题,对URL重写支持得不好的问题,在新版中仍旧存在
在未开启你的URL重写的情况下,url会正确,但会将部分被重写的参数又暴露出来,导致错误发生。
在开启你的URL重写的情况下,URL会将由参数重写出来的路径丢失掉。
本想下你的代码自己改了先用的,但是发现缺少部分资源文件,呵呵,无论如何还是告诉你一下比较好吧,MSN上你最近很少上,我又比较急用,所以特地过来发个帖子喊一声:D
...全文
524 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyz1030 2011-07-12
  • 打赏
  • 举报
回复
ding
fangyinan 2011-05-11
  • 打赏
  • 举报
回复
好东西
xray2005 2007-08-29
  • 打赏
  • 举报
回复
呵呵
还没用到这个功能
帮顶哈....

海洋齐齐 2007-08-29
  • 打赏
  • 举报
回复
蝶恋花雨 2007-08-29
  • 打赏
  • 举报
回复
学习收藏了
cime63 2007-08-29
  • 打赏
  • 举报
回复
mark
babay2008 2007-08-29
  • 打赏
  • 举报
回复
mark.
wxlwxlwxlwxl 2007-08-29
  • 打赏
  • 举报
回复
mark.
zhulei2008 2007-08-29
  • 打赏
  • 举报
回复
没用过。。
zhoucaifu 2007-08-29
  • 打赏
  • 举报
回复
晕~`不懂
bluedreams85 2007-08-29
  • 打赏
  • 举报
回复
收藏
reborter 2007-01-31
  • 打赏
  • 举报
回复
收藏
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
对于分页url重写后的问题,这样改就可以兼容了,当然了,之前的重写规则也得做一些配合调整,至于这段代码是否会引发其他问题,还不确定,应当不会。

string filePath = Page.Request.FilePath;
return Path.GetFileNameWithoutExtension(filePath) + "_{0}" + Path.GetExtension(filePath);
更换为:
return Path.GetFileNameWithoutExtension(currentUrl) + "_{0}" + Path.GetExtension(currentUrl);

return ResolveUrl(string.Format(UrlRewritePattern, (pageIndex == -1) ? "\"+pi+\"" : pageIndex.ToString()));
更换为:
return string.Format(UrlRewritePattern, (pageIndex == -1) ? "\"+pi+\"" : pageIndex.ToString());
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
至于启用了分页URL重写导致的问题,估计不能用ResolveUrl了吧,前面的代码有问题应该是,将1118和1119两行
currentUrl = Page.Request.Path;
urlParams = Page.Request.QueryString;
替换为:
urlParams = new NameValueCollection();
string[] QueryStringArray = null;
string[] tmpArray = null;
int IndexOfQueryString = Page.Request.RawUrl.IndexOf('?');
if (IndexOfQueryString > -1)
{
QueryStringArray = Page.Request.RawUrl.Substring(IndexOfQueryString + 1).Split('&');
currentUrl = Page.Request.RawUrl.Substring(0, IndexOfQueryString);
}
else
{
currentUrl = Page.Request.RawUrl;
}
if (QueryStringArray != null)
{
for (int i = 0; i < QueryStringArray.Length; i++)
{
tmpArray = QueryStringArray[i].Split('=');
if (tmpArray.Length == 2)
{
urlParams.Add(tmpArray[0], tmpArray[1]);
}
else if (tmpArray.Length == 1)
{
urlParams.Add(tmpArray[0], tmpArray[0]);
}
}
QueryStringArray = null;
tmpArray = null;
}
flyin2006 2007-01-31
  • 打赏
  • 举报
回复
diu
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
写了段抓querystring来分析的代码,替换掉1119行的urlParams = Page.Request.QueryString;或许就可以解决问题了:D,不过代码写得拙劣,只是能实现功能而已。
----------------------------
System.Collections.Specialized.NameValueCollection urlParams = new System.Collections.Specialized.NameValueCollection();
string[] QueryStringArray = null;
string[] tmpArray = null;
if(Page.Request.RawUrl.IndexOf('?') > -1)
{
QueryStringArray = Page.Request.RawUrl.Substring(Page.Request.RawUrl.IndexOf('?')+1).Split('&');
}
for (int i = 0; i < QueryStringArray.Length; i++)
{
tmpArray = QueryStringArray[i].Split('=');
if (tmpArray.Length == 2)
{
urlParams.Add(tmpArray[0], tmpArray[1]);
}
else if (tmpArray.Length == 1)
{
urlParams.Add(tmpArray[0], tmpArray[0]);
}
}
QueryStringArray = null;
tmpArray = null;
buller 2007-01-31
  • 打赏
  • 举报
回复
帮顶,蹭粪
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
解决应该也简单,
开启分页重写后,不要带路径,直接走文件就可以了
关了的话,取querystring来分析的时候,不要直接取,而是去抓url来分析。
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
看了下控件的代码,貌似用了url重写之后就使用的相对路径带上了目录,而不单纯的是最后的文件名,但是获取的目录又是真实的目录路径而非重写后的,导致了该问题的发生,而URL重写关闭的话,则直接链到文件上,于是没有这个问题,但却将url重写后应当隐蔽的参数暴露出来了,比如:
原URL:http://www.webdiyer.com/aa/cc.aspx?name=bb
重写为:http://www.webdiyer.com/aa/bb/cc.aspx
在控件下,
开启url重写后会被输出为/aa/cc_2.aspx这样的,将bb丢失了
关闭后将会被输出为cc.aspx?name=bb这样的,将name=bb这个应该已经屏蔽的又输出来了
hertcloud 2007-01-31
  • 打赏
  • 举报
回复
呵呵
还没用到这个功能
帮顶哈....
加载更多回复(2)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧