Ajax.net运行提示“Sys未定义错误”的解决办案

来源:互联网 发布:结婚电子相册制作软件 编辑:程序博客网 时间:2024/04/27 14:28
配置文件一般都会缺少<httpHandlers></httpHandlers> 这一段, <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.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> 还有就是 <asp:SrciptManager> 控件一定要紧跟在<form>后面另外 服务器上可能缺少三个dll文件他们所在的文件夹位置是C:/Program Files/Microsoft ASP.NET/ASP.NET 2.0 AJAX Extensions/v1.0.61025AJAXExtensionsToolbox.dllSystem.Web.Extensions.Design.dllSystem.Web.Extensions.dll把这三个dll拷贝到你发布到服务器的网站的bin文件夹里 应该就可以了 
在asp.net项目中如果用了ajax.net的话,须在在Web.Config文件中的<system.web>里面加入如下语句:
<httpHandlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.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>

如果不加将会提示Sys未定义的错误,当然无刷新的功能也实现不了了!

另一点须要注意的是:(如果直接运行在VS2008的环境下,第二种情况是不需要考虑的,第一个方法即可解决问题!)

在iis里,把.axd映射C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll 的“确认文件是否存在”这个取消打钩即可。

提前祝大家新年好!前段时间日夜赶工,终于按计划推出了项目的新版本。今天终于有时间写点东西了。

前段时间公司同事在项目中引入了Asp.net Ajax (beta1)版。 用着用着,在查看网页时,不时报 Sys未定义 的错误。按照网上的办法对web.confg 做了一翻手术,一点效果也没有。想想也对,web.config跟本没改动过,凭什么突然就把问题都算在人家头上?经过一翻摸索后,突然发现,原来是身份验证惹的祸。在配置了身份验证的网站中,访问未登录页面时,对Ajax脚本资源的访问被拒绝,转向到了登录页面,由于请求不到脚本文件,页面上对ajax的调用就无法完成,报 Sys未定义 错误!

具体情况如下:

Asp.net Ajax 的脚本都是封装成vxd文件(一种IHttpHandle的实现,asp.net本身的脚本也是采用这种方式实现的),我们在页面上可以看到类似于如下的脚本引用:

asp.net的脚本引用

<script src="/ADCAdminPortal/WebResource.axd?d=oaHQugHLcngT9QBb6bqlOQ2&amp;t=632980334575156250" type="text/javascript"></script>

asp.net Ajax 的脚本引用
<script src="/ADCAdminPortal/ScriptResource.axd?d=yvZpRQrDbxpfjwZQ-SD6d59FTbTz2nfeQMLt1bp5Av-9SkGCaXBfqf0HVEgduxP2f6U7UUs1yT2Gh7BsFIoKYNnXT56B5pflXKy3iFKZUFL-PFKULAHEYgZH4c-KK2T3R8gdXVYECnCzMt0XRtk7TB9ydna4LCyYoh_WttSxiho1&amp;t=632992694620822500" type="text/javascript"></script>
<script src="/ADCAdminPortal/ScriptResource.axd?d=yvZpRQrDbxpfjwZQ-SD6d59FTbTz2nfeQMLt1bp5Av-9SkGCaXBfqf0HVEgduxP2f6U7UUs1yT2Gh7BsFIoKYNnXT56B5pflXKy3iFKZUFL-PFKULAHEYgZH4c-KK2T3D4Nw9sGEQEXOmb5pILf4ACll48eLd5fNcjH_mOdiJtM1&amp;t=632992694620822500" type="text/javascript"></script>

当需要身份验证时,未登录前,对web站点的任何文件的访问都将被拒绝。 而一般的网站都有一部分页面是不需要身份证验的,如:首页,新闻页面,登录页面,等等。 所以,网站的Sys未定义错误就出现了。将 axd文件定义为无需验证后,该错误彻底解决。

<location path="ScriptResource.axd">
<system.web>
<authorization>
<allow users="*"/>

 

 

Ajax中“Sys未定义”错误的解决方法汇总(转)

文章分类:Web前端

 今天研究AJAX的东西,遇到“Sys未定义”的错误,在网上搜了一大通,一般都是第三个错误,我的却不是,所以很崩溃。搜到这篇文章后用方法1解决了,所以很是兴奋。由于本人的无知,弄了一上午才解决这个问题,所以特在此分享一下,希望能节约大家的生命。

 

原文链接: http://changqing.jobidc.com/document/show.aspx?id0=3844

错误:在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>节点下加入

 

Xml代码 复制代码
  1. <httpHandlers>  
  2.   
  3.       <remove verb="*" path="*.asmx"/>  
  4.   
  5.       <add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>  
  6.   
  7.       <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"/>  
  8.   
  9.       <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"/>  
  10.   
  11.  </httpHandlers>  
  12.   
  13.    
  

解决方法4

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

web.config配置如下:

Xml代码 复制代码
  1. <?xml version="1.0"?>  
  2.   
  3. <!--   
  4.   
  5.     注意: 除了手动编辑此文件以外,您还可以使用   
  6.   
  7.     Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的   
  8.   
  9.      “网站”->“Asp.Net 配置”选项。   
  10.   
  11.     设置和注释的完整列表在   
  12.   
  13.     machine.config.comments 中,该文件通常位于   
  14.   
  15.     /Windows/Microsoft.Net/Framework/v2.x/Config 中   
  16.   
  17. -->  
  18.   
  19. <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">  
  20.   
  21.  <appSettings>  
  22.   
  23.   <add key="CrystalImageCleaner-AutoStart" value="true"/>  
  24.   
  25.   <add key="CrystalImageCleaner-Sleep" value="60000"/>  
  26.   
  27.   <add key="CrystalImageCleaner-Age" value="120000"/>  
  28.   
  29.  </appSettings>  
  30.   
  31.  <connectionStrings>  
  32.   
  33.   <add connectionString="Data Source=192.168.7.10;Initial Catalog=DyNet;Persist Security Info=True;User ID=dynetuser;Password=nmamtf" providerName="System.Data.SqlClient"/>  
  34.   
  35.  </connectionStrings>  
  36.   
  37.  <system.web>  
  38.   
  39.   <!--   
  40.   
  41.             设置 compilation debug="true" 可将调试符号插入   
  42.   
  43.             已编译的页面中。但由于这会   
  44.   
  45.             影响性能,因此只应在开发过程中设置   
  46.   
  47.             此值。   
  48.   
  49.             Visual Basic 选项:   
  50.   
  51.             设置 strict="true" 将禁止所有会导致   
  52.   
  53.             数据丢失的类型转换。   
  54.   
  55.             设置 explicit="true" 将强制声明所有变量。   
  56.   
  57.         -->  
  58.   
  59.   <authorization>  
  60.   
  61.    <allow users="?"/>  
  62.   
  63.   </authorization>  
  64.   
  65.   <httpRuntime executionTimeout="160"/>  
  66.   
  67.   <sessionState timeout="120"/>  
  68.   
  69.   <compilation debug="true" strict="false" explicit="true">  
  70.   
  71.    <assemblies>  
  72.   
  73.     <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>  
  74.   
  75.     <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>  
  76.   
  77.     <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>  
  78.   
  79.     <add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>  
  80.   
  81.     <add assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>  
  82.   
  83.     <add assembly="CrystalDecisions.Shared, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>  
  84.   
  85.     <add assembly="CrystalDecisions.ReportSource, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>  
  86.   
  87.     <add assembly="CrystalDecisions.Enterprise.Framework, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>  
  88.   
  89.     <add assembly="CrystalDecisions.Enterprise.Desktop.Report, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>  
  90.   
  91.     <add assembly="CrystalDecisions.CrystalReports.Engine, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>  
  92.   
  93.     <add assembly="CrystalDecisions.Enterprise.InfoStore, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>  
  94.   
  95.     <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>  
  96.   
  97.     <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>  
  98.   
  99.     <add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>  
  100.   
  101.     <add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>  
  102.   
  103.     <add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>  
  104.   
  105.     <add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>  
  106.   
  107.     <add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>  
  108.   
  109.     <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>  
  110.   
  111.     <add assembly="System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies>  
  112.   
  113.    <buildProviders>  
  114.   
  115.     <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>  
  116.   
  117.    </buildProviders>  
  118.   
  119.   </compilation>  
  120.   
  121.   <pages>  
  122.   
  123.    <namespaces>  
  124.   
  125.     <clear/>  
  126.   
  127.     <add namespace="System"/>  
  128.   
  129.     <add namespace="System.Collections"/>  
  130.   
  131.     <add namespace="System.Collections.Specialized"/>  
  132.   
  133.     <add namespace="System.Configuration"/>  
  134.   
  135.     <add namespace="System.Text"/>  
  136.   
  137.     <add namespace="System.Text.RegularExpressions"/>  
  138.   
  139.     <add namespace="System.Web"/>  
  140.   
  141.     <add namespace="System.Web.Caching"/>  
  142.   
  143.     <add namespace="System.Web.SessionState"/>  
  144.   
  145.     <add namespace="System.Web.Security"/>  
  146.   
  147.     <add namespace="System.Web.Profile"/>  
  148.   
  149.     <add namespace="System.Web.UI"/>  
  150.   
  151.     <add namespace="System.Web.UI.WebControls"/>  
  152.   
  153.     <add namespace="System.Web.UI.WebControls.WebParts"/>  
  154.   
  155.     <add namespace="System.Web.UI.HtmlControls"/>  
  156.   
  157.    </namespaces>  
  158.   
  159.   </pages>  
  160.   
  161.   <!--   
  162.   
  163.             通过 <authentication> 节可以配置 ASP.NET 使用的   
  164.   
  165.             安全身份验证模式,   
  166.   
  167.             以标识传入的用户。   
  168.   
  169.         -->  
  170.   
  171.   <authentication mode="None"/>  
  172.   
  173.   <!--   
  174.   
  175.             如果在执行请求的过程中出现未处理的错误,   
  176.   
  177.             则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,   
  178.   
  179.             开发人员通过该节可以配置   
  180.   
  181.             要显示的 html 错误页   
  182.   
  183.             以代替错误堆栈跟踪。   
  184.   
  185.         <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">  
  186.   
  187.             <error statusCode="403" redirect="NoAccess.htm" />  
  188.   
  189.             <error statusCode="404" redirect="FileNotFound.htm" />  
  190.   
  191.         </customErrors>  
  192.   
  193.         -->  
  194.   
  195.   <httpHandlers>  
  196.   
  197.    <add path="CrystalImageHandler.aspx" verb="GET" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>  
  198.   
  199.    <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>  
  200.   
  201.    <remove verb="*" path="*.asmx"/>  
  202.   
  203.    <add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>  
  204.   
  205.    <add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler" validate="false"/>  
  206.   
  207.   </httpHandlers>  
  208.   
  209.  </system.web>  
  210.   
  211. </configuration>  
  212.   
  213.     
  214.   
  215.  今天研究AJAX的东西,遇到“Sys未定义”的错误,在网上搜了一大通,一般都是第三个错误,我的却不是,所以很崩溃。搜到这篇文章后用方法1解决了,所以很是兴奋。由于本人的无知,弄了一上午才解决这个问题,所以特在此分享一下,希望能节约大家的生命。   
  216.   
  217. 原文链接: http://changqing.jobidc.com/document/show.aspx?id0=3844  
  218.   
  219. 错误:在Ajax应用中自定义脚本时出现"Sys未定义"的错误。   
  220.   
  221. 解决方法1 :把取得PageRequestManager实例的语句(如:var prm = Sys.WebForms.PageRequestManager.getInstance();   
  222.   
  223. )放在函数里面。   
  224.   
  225. 解决方法2 :把js代码放在ScriptManager控件定义之后。   
  226.   
  227. 原因分析:ScriptManager控件放在body中   
  228.   
  229. 而javascript代码放在了ScriptManager控件之前的位置   
  230.   
  231. 因为html是逐行加载的   
  232.   
  233. 由于var prm = Sys.PageRequestManager.getInstance();   
  234.   
  235. 在加载ScriptManager控件的js代码之前就被调用了,   
  236.   
  237. 所以就出现了Sys未定义的情况   
  238.   
  239. 解决方法3 :(这个我试成功的!)   
  240.   
  241. 在配置文件的  <system.web>节点下加入   
  242.   
  243. <httpHandlers>  
  244.   
  245.       <remove verb="*" path="*.asmx"/>  
  246.   
  247.       <add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>  
  248.   
  249.       <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"/>  
  250.   
  251.       <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"/>  
  252.   
  253.  </httpHandlers>  

 

 

 

 

原创粉丝点击