小弟最近被迫使用Ajax,于是使用了asp.net ajax来实现,恩,那个简单呀,三下两下就搞定了...但问题也立马就出来了,和我的url重写冲突了,我的url重写模块是我自己写的,做了一个过滤器早就把服务器form的提交位置有错的问题解决过,但是现在只要是第2次使用ajax做回发,就会报告404错误,来cnblogs看到有人说到此问题,居然说通过修改action的方式可以解决,很纳闷,action那我早就解决过,而且看起来也是最好的解决办法...于是开了个钩子程序,抓了ie每次的最终post地址,发现在ajax第2次回发之后,就会将他的提交地(不是页面的action而是aspnet ajax内部用js生成的一个叫form._initialAction的东西)址改为相对路径,当然会有问题了,所以请发现url重写与ajax冲突的兄弟,注意测试好这个问题,不要让东西上了线才发现问题...更不要认为修改了action就万事大吉了...这个问题,其实我更认为是“ASP.NET AJAX RC1”的缺陷,为什么要用相对路径呢?老实点直接把action拿过来,不要搞那么多奇怪的处理不是更好吗?当然了,我并不了解他的设计原理,估计也是有他自己的理由吧,解决这个问题的相关代码如下:
posted on 2007-01-08 11:05 cnlamar 阅读(3904) 评论(19) 编辑 收藏
不好意思 问个菜鸟问题 http://www.baidu.com/s?cl=3 比如这个地址 但是他并没有扩展名 这个也是url重写的吗? 还是做了什么特别设置? 回复 引用
@APPLE[匿名] UrlRewrite的说法对特定的服务器才有效吧。如果服务器是自己写的,识别URL可以与硬盘上的文件根本没有人关系,也就不存在UrlRewrite的说法。 回复 引用 查看
你可以把url重写看作是一种通用WEB服务器上的一个插件这样的东西,要实现对URL的处理,方法太多,最根本的无非就是监听到80的请求,分析http数据报文,然后做相应处理,只是我们都用的什么IIS APACHE他们来做WEB服务器,所以他们提供了相应的接口而已,至于baidu,他的壳好象是php的,至于没有扩展名,那无所谓,用IIS也可以做到,和url重写没关系。 回复 引用 查看
明白了 谢谢 接下来的一个问题就是 用IIS怎么做到呢? 很感兴趣 嘿嘿 困扰了很久这个问题 回复 引用
通过 asp.net 的 HttpModule 或 HttpHandler 实现 URL Rewrite 可能会存在 postback 判定的问题,从请求的处理流程上来说,可能是晚了一步。通过找一个合适的专门做 URL Rewrite 的 ISAPI filter 程序应该能解决这个问题,让重写动作始终在进入 ASP.NET 进程的处理动作之前发生。 回复 引用 查看
既然是POST的话为什么会缓存呢?而且您又用了随机的URL,这肯定不是缓存的原因。 事实上我没有看懂您现在的问题,修改action的方法其实能够解决问题阿,事实上已经解决了很多次这个问题了。莫非您有些特殊的情况? 我觉得其实这倒不能说是ASP.NET AJAX RC的缺陷,应该说,这只是“没有办法”才发生的问题。 您能不能把出现的问题打个包发到jeffreyzhao1985@hotmail.com让我研究一下呢?:) 回复 引用 查看
我没有测试过IIS对无扩展名的如何处理,你可以试试用通配符来解决,但那样就意味着你的处理程序会接管一切请求,性能会很大受损。。。cnblogs所用的text好象就是这样。。。 木野狐,不明白postback 判定的问题是什么。。。呵呵。。。 Jeffrey Zhao,其实我用缺陷俩字就是希望引起更多人注意,帮忙解决,呵呵。。。问题依旧没有解决,不过通过数小时的琢磨,问题确实没有发生在IE缓存那,我是今天才开始接触aspnet ajax这个东西的,之前只是看过,但都没怎么用过,更不要说深入的了解了,但项目进度很紧,现在根本容不得我慢慢消化理解。。。但是今天在网上看见有人提到,说好象是回发的内容,在呈现之前,无法被谁谁谁获得怎么的,我也没看得很明白,我确实不了解这玩意的运作流程,但现在我基本肯定的是,出现这个问题的时候,服务器的事件没有被执行,但请求肯定发出了,我用抓包程序看见请求从IE出去了。。。我找找关于那个的说法,贴出来麻烦各位帮忙看看 回复 引用 查看
发现用了这东东后,希奇古怪的毛病真够多的。。。发现自己跟不上时代的步伐了,呵呵。。。 回复 引用 查看
我搜索到的一个文章,他遇见的问题与我应该是一样的,其中一个评论比较有意义,但我在pageload中无论如何都将相应的Repeater进行DataBind,如评论中所说的那样,但是问题依然持续。。。 triffang(⊙珠海的沙漠⊙) ( ) 信誉:98 Blog 2006-10-27 21:31:23 得分: 15 Dflying Chen的说法 原因在于,Beta 1中所有的客户端脚本统一由ScriptManager管理,而ScriptManager是在PreRender时期遍历页面中的控件并输出必要的客户端脚本,但模板中的内容通常也是在PreRender时才生成的,这样二者错失了沟通的机会,自然模版中的Extender Control所必须的客户端脚本将不会被发送至浏览器,也就最终导致了Extender Control无法在模板控件中使用。 解决方法就是在PreRender之前,例如Load事件中强制让页面生成模版控件或数据绑定控件的内容,这样在PreRender的时候ScriptManager就可以正确找到他们了: protected void Page_Load(object sender, EventArgs e) { GridView1.DataBind(); // 数据绑定控件用这个 object o = Login1.Controls; // 模版控件用这个 } 回复 引用 查看
Jeffrey Zhao,由于代码关联度比较大,光发那个页面基本肯定是跑不起来的,呵呵,发整个个工程又太大,或者在不跑起来的情况下直接看看代码,看能否解决问题吧? 回复 引用 查看
@cnlamar 这个是比较早版本的问题了(似乎是Beta 1?),现在还存在吗? 您能否特意“制造”一个出线问题的简单页面呢?如果没有的话,我们想想看,解决问题的方法吧,比如哪里能访问到这个页面呢?:) 回复 引用 查看
博主你好^_^ 我是51CTO技术博客的大管家,博友向51CTO博采众客栏目推荐了您这篇文章。“博采众客”收录来自各个博客的优秀原创文章,链接直接指向该博客文章。希望我们的推荐能让更多的博友分享您的作品! (查看推荐:http://blog.51cto.com/digest) 博采众客的参与者都有机会获得奖品,详情请见: http://51ctoblog.blog.51cto.com/blog/26414/9910 如果您不希望被我们推荐,请以登陆名回复说明,并发邮件至blog@51cto.com,我们会取消对您的链接,谢谢! 回复 引用
问题解决了,其实和ajax本身无关,是那个页面本身导致的,但由于ajax将一切的异常给屏蔽了,并且将之前的数据给返回来进行了填充,导致我误会了错误发生的地方。。。不过说实话,aspnet ajax这样做,很容易让人误会,或许是因为我用的版本非debug? 回复 引用 查看
@cnlamar 因为是异步PostBack,有时候Debug的确不是很方便,不过一般来说使用一个截包工具,再加上客户端和服务器端的调试工具就会很方便了。:) 回复 引用 查看
但是我认为至少应该在处理过程中如果出现了异常,应该以某种方式体现出来,我虽然对这东东了解不深,但直觉告诉我,他应该是走完了整个asp.net流程,不过在最后呈现的时候做了控制,只呈现出了updatepanel这个控件,然后将其返回填充以实现的,那么在这种情况下,遇见页面发生异常,并做一些处理抛出,应该是能够做到的,这样至少让使用者清楚的知道一个大致的错误定位。。。 回复 引用
"问题解决了,其实和ajax本身无关,是那个页面本身导致的," cnlamar可以说一下你是怎样解决的吗?我也遇到过这样的问题,但一直都还没有解决 回复 引用
@jack 是页面代码本身有问题,但是异常被屏蔽了导致了我的错觉。 回复 引用 查看
出售蓝奇高级验证码识别引擎,可准确识别新浪动网淘宝CSDN等多种复杂验证码。 输出为一个标准DLL,可供VB,VC,Delphi,C#.NET,VB.NET,模拟精灵,按键精灵等多平台调用,调用方法简单,几行代码即可完成。独具特色的边缘检测字符分离、旋转倾斜纠正和通用字符匹配算法(无论字体和大小), 使得该引擎对于像新浪、动网、淘宝、CSDN等多种验证码均有不错的识别率,是一款效果较为理想的验证码识别引擎。附详细的调用实例和代码注释等相关技术文档。 官方网站 - http://***/yzm_advocr 识别效果怎么样一试就知道 - DEMO下载 http://***/yzm_advocr/advocr.rar 回复 引用
昵称: [登录] [注册]
主页:
邮箱:(仅博主可见)
验证码: 看不清,换一个
评论内容:
登录 注册
[使用Ctrl+Enter键快速提交评论]
Powered by: 博客园 Copyright © cnlamar