日期:2014-05-17  浏览次数:21137 次

asp.net ajax sys 未定义异常处理
sys未定义的解决方案 asp.net ajax
2009-08-04 09:47
误:在Ajax应用中自定义脚本时出现"Sys未定义"的错误。
解决方法1:把取得PageRequestManager实例的语句(如:var prm = Sys.WebForms.PageRequestManager.getInstance();
)放在函数里面。
解决方法2:把js代码放在ScriptManager控件定义之后。
原因分析:ScriptManager控件放在body中
而javascript代码放在了ScriptManager控件之前的位置
因为html是逐行加载的
由于var prm = Sys.PageRequestManager.getInstance();
在加载ScriptManager控件的js代码之前就被调用了,
所以就出现了Sys未定义的情况

解决方法3:(这个我试成功的!)

在配置文件的 <system.web>节点下加入

<httpHandlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>

解决方法4:

引用了"System.Web.Extensions.dll"就ok了。

web.config配置如下:

<?xml version="1.0"?>
<!--
    注意: 除了手动编辑此文件以外,您还可以使用
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”->“Asp.Net 配置”选项。
    设置和注释的完整列表在
    machine.config.comments 中,该文件通常位于
    \Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true"/>
<add key="CrystalImageCleaner-Sleep" value="60000"/>
<add key="CrystalImageCleaner-Age" value="120000"/>
</appSettings>
<connectionStrings>
<add name="dynetdata" connectionString="Data Source=192.168.7.10;Initial Catalog=DyNet;Persist Security Info=True;User ID=dynetuser;Password=nmamtf" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<!--
            设置 compilation debug="true" 可将调试符号插入
            已编译的页面中。但由于这会
            影响性能,因此只应在开发过程中设置
            此值。

            Visual Basic 选项:
            设置 strict="true" 将禁止所有会导致
            数据丢失的类型转换。
            设置 explicit="true" 将强制声明所有变量。
        -->
<authorization>
   <allow users="?"/>
</authorization>
<httpRuntime executionTimeout="160"/>
<sessionState timeout="120"/>
<compilation debug="true" strict="false" explicit="true">
   <assemblies>
    <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=ne