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


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

    顺藤摸瓜,毕竟"WebForm_PostBackOptions"这个东西并不是我自己定义的,看样子,有点像微软的东西,于是便摸到了源代码中的这句:

    <script src="/WebResource.axd?d=t-9R4BQFzTBoDiiGpxgiTg2&amp;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的映射。

    解决方法:

    1. 要求空间提供商在站点配置填加.axd的映射,但“检查文件是否存在”不能选择。
    2. 不使用验证控件、不使用以.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没有被正确执行。

  • 相关阅读:
    Scala学习十二——高阶函数
    Scala学习十一——操作符
    Scala学习十——特质
    Scala学习九——文件和正则表达式
    Scala学习八——继承
    Scala学习七——包和引入
    Scala学习六——对象
    Scala学习五——类
    Scala学习四——映射和数组
    Spark Broadcast内幕解密:Broadcast运行机制彻底解密、Broadcast源码解析、Broadcast最佳实践
  • 原文地址:https://www.cnblogs.com/uonun/p/1698972.html
Copyright © 2020-2023  润新知