当前位置:编程学习 > C#/ASP.NET >>

『CSDN所有专家』URL进行了重写,在登录提交之后浏览器的地址又变回原来的地址!乐意帮忙的请进................

我在自己的网站上使用了URL重写。在一个信息展示页,有一个用户登陆控件。这个信息展示页是经过url重新的,登陆控件使用的MS的Login控件。在浏览该页时的URL如../info7.aspx,Form的action也是../info7.aspx.当点击登陆进行登陆,这时我的重写模块第一次接受到的原始请求是../info7.aspx,然后我将它重写到../info.aspx?cate=7这个地方。这时我的重写模块第二次接受到请求,这个请求就是../info.aspx?cate=7。最后我的客户端的页面url也就变成../info.aspx?cate=7了!!

      我有个问题在这里:这两次请求是不是这样得来的呢?首先请求../info7.aspx是的请求为客户端post请求。当重写模块届到请求之后,进行重写此时真实的页面接受到的是get请求。当获得get页面请求之后,页面验证被触发!!这是使用的是Post动作,执行用户登录验证代码。我认为第二次请求是这么得来的!
      不知道我分析的是否正切,同时我也有个疑问就是在第一次请求被重写之后(post请求被转化为get请求),是如何触发验证事件的呢???
     如何谁能解决我的困惑和这个登录url地址变化的问题。[ --------------------编程问答-------------------- 今天人都去哪了? --------------------编程问答-------------------- 1.post请求只有一次,而并不是你所说的什么post转get.应该是 请求->解析地址->处理登陆事件->重新载入页面元素,于是form的action又赋上了真实的地址.下面是解决问题的方法

2.解决问题的方法
http://hi.baidu.com/beyond_javy/blog/item/87f950a9b7875ef91f17a207.html --------------------编程问答--------------------
引用 2 楼 jack20080808 的回复:
1.post请求只有一次,而并不是你所说的什么post转get.应该是 请求->解析地址->处理登陆事件->重新载入页面元素,于是form的action又赋上了真实的地址.下面是解决问题的方法

2.解决问题的方法
http://hi.baidu.com/beyond_javy/blog/item/87f950a9b7875ef91f17a207.html

我的第一个问题你解释的不正确啊!如你所说:请求->解析地址->处理登陆事件 那么IsPostBack属性是如何获取的呢??你的这个说法解释不了我的疑问!
你下面给的url地址中的做法和我正在使用的是相同的方法。我也是用定制了Form.browser浏览器文件,编写了相应的处理类。但是这种方法在我点击登录时失效了(其他时候可以)。 --------------------编程问答-------------------- 你可以查看msdn  有讲述和你一样的问题
http://user.qzone.qq.com/83873308/blog/1221546814
http://user.qzone.qq.com/83873308/blog/1221547388
http://user.qzone.qq.com/83873308/blog/1221547417 --------------------编程问答-------------------- http://msdn.microsoft.com/zh-cn/library/ms972974.aspx --------------------编程问答-------------------- 这里有你要的答案:http://www.cnblogs.com/JeffreyZhao/archive/2008/01/13/1036688.html --------------------编程问答--------------------
引用 3 楼 POPO_POPO 的回复:
引用 2 楼 jack20080808 的回复:
1.post请求只有一次,而并不是你所说的什么post转get.应该是 请求->解析地址->处理登陆事件->重新载入页面元素,于是form的action又赋上了真实的地址.下面是解决问题的方法 

2.解决问题的方法 
http://hi.baidu.com/beyond_javy/blog/item/87f950a9b7875ef91f17a207.html 
 
我的第一个问题你解释的不正确啊!如你所说:请求->解析地址->处理登陆事件 那么IsPostBack属性是如何获取的呢??…


请求->解析地址->处理登陆事件
我说的是解析后地址之后,页面执行的步骤就是一个普通asp.net页的执行步骤了(asp.net页面的生命周期)



页请求
 页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。
 
开始
 在开始阶段,将设置页属性,如 Request 和 Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性。此外,在开始阶段期间,还将设置页的 UICulture 属性。
 
页初始化
 页初始化期间,可以使用页中的控件,并将设置每个控件的 UniqueID 属性。此外,任何主题都将应用于页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。
 
加载(form action重新赋值的过程就这步)
 加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。
 
验证
 在验证期间,将调用所有验证程序控件的 Validate 方法,此方法将设置各个验证程序控件和页的 IsValid 属性。
 
回发事件处理
 如果请求是回发请求,则将调用所有事件处理程序。
 
呈现
 在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 中。
 
卸载
 完全呈现页并已将页发送至客户端、准备丢弃该页后,将调用卸载。此时,将卸载页属性(如 Response 和 Request)并执行清理。
 


--------------------编程问答--------------------
引用 6 楼 peking2009 的回复:
这里有你要的答案:http://www.cnblogs.com/JeffreyZhao/archive/2008/01/13/1036688.html

这个我早看过了,我使用的方法和老赵的相同。但是用户登录时出现的问题!! --------------------编程问答--------------------
引用 7 楼 jack20080808 的回复:
引用 3 楼 POPO_POPO 的回复:
引用 2 楼 jack20080808 的回复:
1.post请求只有一次,而并不是你所说的什么post转get.应该是 请求->解析地址->处理登陆事件->重新载入页面元素,于是form的action又赋上了真实的地址.下面是解决问题的方法

2.解决问题的方法
http://hi.baidu.com/beyond_javy/blog/item/87f950a9b7875ef91f17a207.html

我的第一个问题你解释的不正确啊!如你所说:请求->解析地址->处理登陆事件 那么IsPostB…

你说的不错,但是还是不能解决问题啊!! --------------------编程问答-------------------- 于关urlRewriter.dll回发的问题其实在msdn的帮助上有说明。用到了ActionlessForm.dll来解决这个问题。
在这里我引用了一篇文章你看一下(http://www.cnblogs.com/tiger8000/archive/2007/11/01/945901.html),然后再参考msdn应该就没有问题了。操作一定要仔细认真看每个细节即可。 --------------------编程问答-------------------- up
up
up --------------------编程问答-------------------- http://www.svnhost.cn/Article/Detail-123.shtml --------------------编程问答-------------------- up --------------------编程问答-------------------- up,我也想知道答案~ --------------------编程问答-------------------- 期待高手来解决 我也想知道答案... --------------------编程问答-------------------- 期待高手来解决 我也想知道答案... --------------------编程问答-------------------- up~
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,