邀朋友种豆,一起分享吧
喜欢购买正品行货?那就去品牌街

因身份验证导致Asp.net Ajax中“Sys未定义”错误的解决方法

来自:种豆 时间:2017-12-29 阅读:1002次 原文链接
    身份验证可能会导致Asp.net Ajax报 ’Sys’未定义 错误。在配置了身份验证的网站中,访问未登录页面时,对Ajax脚本资源的访问被拒绝,转向到了登录页面,由于请求不到脚本文件,页面上对ajax的调用就无法完成,就会报 Sys未定义 错误!     Asp.net Ajax 的脚本都是封装成vxd文件(一种IHttpHandle的实现,asp.net本身的脚本也是采用这种方式实现的),我们在页面上可以看到类似于如下的脚本引用: <script src="http://www.sowsoy.com" type="text/javascript"></script>
    当需要身份验证时,未登录前,对web站点的任何文件的访问都将被拒绝。而一般的网站都有一部分页面是不需要身份证验的,如:首页,新闻页面,登录页面,等等。这种情况网站的Sys未定义错误就出现了。可通过如下方式将axd文件定义为无需验证,解决由身份验证导致的 Sys未定义 错误。 <location path="ScriptResource.axd">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>     相当一部分Asp.net Ajax的脚本错误是由于脚本资源文件vxd无法解析造成的。    如果出现脚本错误,先查看IE中页面的html源码,将<scipt>脚本引用中的src 值全部copy下来,直接放入IE的地址栏进行访问,如果能解析为脚本文件(提示下载),则表示解析成功,如果不能下载,表示vxd无法解析,原因一般都是身份证验证造成的。    如果仅仅出现白底黑字的 “无法找到网页”的IIS错误页面,那就与asp.net无关了,有可能是IIS未解析vxd文件,可以检查IIS的默认扩展名解析配置是否被改动过。如果没有改动过,将虚拟目录重建。要不然就在IIS中重新注册asp.net.
    如果仍出现此错误,可尝试在配置文件中的 system.web 节点中加入如下代码,由于Ajax脚本本身就是一种 httpHandlers 的实现,我们就通过下面这段代码直接在配置文件中写入这段httpHandlers。?<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>?


 
关于种豆 ┊ 联系我们 ┊ 免责声明 ┊ 发帖须知 ┊ 请提意见 ┊ 站点地图
本站为个人爱好兴趣分享网站,不代表本人观点,如有侵权请联系QQ3033380280进行处理
sowsoy.com 版权所有 Copyright©2010-2021 备案号:蜀ICP备2020025376号-3
Email:sowsoy#hotmail.com