[.axd]“WebForm_PostBackOptions未定义”及其他相关问题的相关解决方法
2010-03-28 18:24
218 查看
一个.NET的web项目,本来运行得非常好的,突然之间报了WebForm_PostBackOptions未定义这么个js错误,然后导致了页面无法PostBack,很严重,很生气。
顺藤摸瓜,毕竟"WebForm_PostBackOptions"这个东西并不是我自己定义的,看样子,有点像微软的东西,于是便摸到了源代码中的这句:
相信做.NET的同仁已经对这句代码都习惯了,这个是微软自动生成的动态JS文件,用于支持ASP.NET中WebForm的一些基本代码。但今天的问题就恰好出在这里,我直接在浏览器访问这个地址,果然,产生了服务器异常,JS根本就没有输出出来。(以下异常由uoLib输出)
"/" 应用程序中的服务器错误。
Stack<Exception>[0]:
Specified argument was out of the range of valid values. Parameter name: utcDate
类型(Exception.GetType()) :System.ArgumentOutOfRangeException
来源(Exception.Source) :System.Web
方法(Exception.TargetSite) :Void UtcSetLastModified(System.DateTime utcDate)
类对象(Exception.TargetSite.ReflectedType) :System.Web.HttpCachePolicy
看样子,问题是出在时间上。而代码是微软的,没道理就这么随随便便错了。于是检查了一下服务器时间,靠,2008年?整整迟了一年?OK,将服务器时间调整过来,仅这一下,页面居然就一切正常了!
总结:
根据现象猜想,这段代码应该有一个缓存的机制。在一定时间之内多次访问这个页面时,这段JS会直接使用服务器缓存。于是,当原本的缓存过期,服务器时间却又调到了很久以前,那么“愚蠢”的事情就发生了——调用时根据服务器时间判断,可以调用缓存,而缓存里却已经没有了这段JS的对象。于是乎,后面报的“WebForm_PostBackOptions未定义”这个错误就自然而然了。
扩展:其他相关问题的相关解决方法:
如下是在网络上搜到的。(有时候之所以我们按照网上的方法照着做也解决不了问题,就是因为没有找到问题产生的根本原因。下面这些,虽然表现均为“WebForm_PostBackOptions未定义”,但产生问题的原因却大相径庭。)
一、一些服务器空间提供商在对ASP.NET的安全处理措施上,去掉了一些默认的映射,以保证服务器尽可能的少受入侵攻击和潜在的安全漏洞的威胁。
比如我们需要的扩展名:.axd 与 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll的映射。
解决方法:
要求空间提供商在站点配置填加.axd的映射,但“检查文件是否存在”不能选择。
不使用验证控件、不使用以.axd支持的.NET Ajax……囧
二、其他一些.NET默认生成的JS里面的方法、对象未定义的错误;以.axd支持的.NET Ajax框架中产生的某些方法、对象未定义的错误。
以下列出了/WebResource.axd里的方法:
WebForm_DoPostBackWithOptions
WebForm_PostBackOptions
WebForm_DoCallback
WebForm_CallbackComplete
WebForm_ExecuteCallback
WebForm_FillFirstAvailableSlot
WebForm_InitCallback
WebForm_InitCallbackAddField
WebForm_EncodeCallback
WebForm_ReEnableControls
WebForm_ReDisableControls
WebForm_FireDefaultButton
WebForm_GetScrollX
WebForm_GetScrollY
WebForm_SaveScrollPositionSubmit
WebForm_SaveScrollPositionOnSubmit
WebForm_RestoreScrollPosition
WebForm_TextBoxKeyHandler
WebForm_AppendToClassName
WebForm_RemoveClassName
WebForm_GetElementById
WebForm_GetElementByTagName
WebForm_GetElementsByTagName
WebForm_GetElementDir
WebForm_GetElementPosition
WebForm_GetParentByTagName
WebForm_SetElementHeight
WebForm_SetElementWidth
WebForm_SetElementX
WebForm_SetElementY
扩展总结:
这个问题的根本原因是.axd没有被正确执行。
顺藤摸瓜,毕竟"WebForm_PostBackOptions"这个东西并不是我自己定义的,看样子,有点像微软的东西,于是便摸到了源代码中的这句:
<script src="/WebResource.axd?d=t-9R4BQFzTBoDiiGpxgiTg2&t=633898576145000000" type="text/javascript"></script>
相信做.NET的同仁已经对这句代码都习惯了,这个是微软自动生成的动态JS文件,用于支持ASP.NET中WebForm的一些基本代码。但今天的问题就恰好出在这里,我直接在浏览器访问这个地址,果然,产生了服务器异常,JS根本就没有输出出来。(以下异常由uoLib输出)
"/" 应用程序中的服务器错误。
Stack<Exception>[0]:
Specified argument was out of the range of valid values. Parameter name: utcDate
类型(Exception.GetType()) :System.ArgumentOutOfRangeException
来源(Exception.Source) :System.Web
方法(Exception.TargetSite) :Void UtcSetLastModified(System.DateTime utcDate)
类对象(Exception.TargetSite.ReflectedType) :System.Web.HttpCachePolicy
看样子,问题是出在时间上。而代码是微软的,没道理就这么随随便便错了。于是检查了一下服务器时间,靠,2008年?整整迟了一年?OK,将服务器时间调整过来,仅这一下,页面居然就一切正常了!
总结:
根据现象猜想,这段代码应该有一个缓存的机制。在一定时间之内多次访问这个页面时,这段JS会直接使用服务器缓存。于是,当原本的缓存过期,服务器时间却又调到了很久以前,那么“愚蠢”的事情就发生了——调用时根据服务器时间判断,可以调用缓存,而缓存里却已经没有了这段JS的对象。于是乎,后面报的“WebForm_PostBackOptions未定义”这个错误就自然而然了。
扩展:其他相关问题的相关解决方法:
如下是在网络上搜到的。(有时候之所以我们按照网上的方法照着做也解决不了问题,就是因为没有找到问题产生的根本原因。下面这些,虽然表现均为“WebForm_PostBackOptions未定义”,但产生问题的原因却大相径庭。)
一、一些服务器空间提供商在对ASP.NET的安全处理措施上,去掉了一些默认的映射,以保证服务器尽可能的少受入侵攻击和潜在的安全漏洞的威胁。
比如我们需要的扩展名:.axd 与 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll的映射。
解决方法:
要求空间提供商在站点配置填加.axd的映射,但“检查文件是否存在”不能选择。
不使用验证控件、不使用以.axd支持的.NET Ajax……囧
二、其他一些.NET默认生成的JS里面的方法、对象未定义的错误;以.axd支持的.NET Ajax框架中产生的某些方法、对象未定义的错误。
以下列出了/WebResource.axd里的方法:
WebForm_DoPostBackWithOptions
WebForm_PostBackOptions
WebForm_DoCallback
WebForm_CallbackComplete
WebForm_ExecuteCallback
WebForm_FillFirstAvailableSlot
WebForm_InitCallback
WebForm_InitCallbackAddField
WebForm_EncodeCallback
WebForm_ReEnableControls
WebForm_ReDisableControls
WebForm_FireDefaultButton
WebForm_GetScrollX
WebForm_GetScrollY
WebForm_SaveScrollPositionSubmit
WebForm_SaveScrollPositionOnSubmit
WebForm_RestoreScrollPosition
WebForm_TextBoxKeyHandler
WebForm_AppendToClassName
WebForm_RemoveClassName
WebForm_GetElementById
WebForm_GetElementByTagName
WebForm_GetElementsByTagName
WebForm_GetElementDir
WebForm_GetElementPosition
WebForm_GetParentByTagName
WebForm_SetElementHeight
WebForm_SetElementWidth
WebForm_SetElementX
WebForm_SetElementY
扩展总结:
这个问题的根本原因是.axd没有被正确执行。
相关文章推荐
- [.axd]“WebForm_PostBackOptions未定义”及其他相关问题的相关解决方法
- eclipse导入java web项目,项目出现红叉而其他地方没有红叉的问题解决方法
- warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;使用 /NODEFAULTLIB:library问题解决方法
- Ubuntu下安装NetBeans步骤和相关问题的解决方法
- [拦截器]关于拦截方法调用其他内部方法无法被拦截问题的解决
- IE6浏览器的bug问题及相关解决的方法
- 关于使用VS.Net2003调试器出现的问题及相关解决方法[转]
- Windows 7下安装Oracle 11g相关问题解决方法
- VC6.0中解决 error LNK2005 相关问题方法
- ESXi(ESXi 4.1)相关问题解决方法和操作学习笔记
- 解决Windows 7下安装Oracle 11g相关问题的方法
- 关于asp.net[没有相关的源行]错误的解决方法及IIS安装问题
- java动态加载指定的类或者jar包反射调用其方法-涉及其他jar中的类就报ClassNotFound问题分析及解决思路
- 使用其他机器上的硬盘启动Centos5系统panic问题解决方法
- PHP基于curl post实现发送url及相关中文乱码问题解决方法
- 解决jquery无法找到其他父级子集问题的方法
- [拦截器]关于拦截方法调用其他内部方法无法被拦截问题的解决
- cocos2d-x 多点触控实现缩放及相关问题的解决方法
- IE相关问题及解决方法