您的位置:首页 > 运维架构

[.axd]“WebForm_PostBackOptions未定义”及其他相关问题的相关解决方法

2010-03-28 18:24 218 查看
一个.NET的web项目,本来运行得非常好的,突然之间报了WebForm_PostBackOptions未定义这么个js错误,然后导致了页面无法PostBack,很严重,很生气。

顺藤摸瓜,毕竟"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没有被正确执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: