ReportViewer控件无法显示(ASP.NET Ajax 客户端框架未能加载,"Sys"未定义)

简介: 由于换了服务器 所以网站要重新发布。 结果发布到新的服务器上的时候reportviewer却无法显示控件 一开始是用IE游览器游览的 找不都错误所在,以为是reportviewer 的问题 于是在网上搜索发现了很多关于这方面的内容 但是发现出现相关的情况 都是“reportviewer在IIS7无法显示”为主题的。

由于换了服务器 所以网站要重新发布。

结果发布到新的服务器上的时候reportviewer却无法显示控件

一开始是用IE游览器游览的 找不都错误所在,以为是reportviewer 的问题

于是在网上搜索发现了很多关于这方面的内容

但是发现出现相关的情况 都是“reportviewer在IIS7无法显示”为主题的。

可是我的IIS是6.0版本的按理说不会出现这种情况。但是还是抱着试一下的想法 按照他们的解决方法试了下。

解决方法如下:

  原因是因为IIS7.5读取web.config的方式改变了,不再读取<system.web>的<httpHandlerss>的设置,而是改成了读取<system.webServer>的<handlers>的设置。

<system.web>   <httpHandlers>   <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>   </httpHandlers> </system.web>

    在IIS7.5下要改成如下:

<system.webServer>     <handlers>     <add name="ReportViewerWebControl" path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>     </handlers> </system.webServer>

设置完成,报表可以正常显示


这边如果有是因为IIS7.0导致无法显示的朋友可以按照上面的方法试一下。

至于我。。当然没有成功了。

因为这边出现的情况是和我出现的一样的。。

所以我就条件反射的也以为是webconfig配置错误。。

结果浪费了一个晚上webconfig 都改烂掉了也没有解决掉。。。

第二天用火狐游览器的firdebug来检测了下

哇哈哈。。结果发现里面提示的是 "ASP.NET Ajax 客户端框架未能加载,"Sys"未定义"

恩开来这就是问题的根源了

于是就开始搜索这类问题的解决方案。。。

 

解决方案如下:

情况一:未设置编码

在<system.web>节点中加个 <globalization requestEncoding="utf-8" responseEncoding="utf-8"/> 就可以解决。

情况二:发布网站时没有添加引用(用VS2008会出现这样情况)

因为VS2008考虑到安全因素,没有在发布程序前添加System.Web.Extensions    System.Web.Extensions.Design两个DLL,需自己添加.

情况三:WEBConfig配置问题

在web.config的system.web节中添加

<httpHandlers><remove path="*.asmx" verb="*"/><add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/><!--<add path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>--><add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/></httpHandlers><httpModules><add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpModules>

即可解决。

情况四:IIS配置问题

查看IIS的配置(如果不是本地就得联系空间服务商),在应用程序配置中查找.axd映射,如果没有就新建,映射路径和.aspx一样,注意不要勾选”检查文件是否存在“,确定后测试下效果。如果已存在映射就检查下路径是否正确以及有没有勾选”检查文件是否存在“,问题应该能够解决


基本上出现的都是上面这些情况。。

然后本人就一个个方法的试。。结果。。没有一个成功。。。

为什么没有成功呢?因为如果成功了也就没有下文了

然后本人就开始思考了

首先

老的两个服务器上面配置文件都没改
都是可以用的 然后补丁也都打了 webconfig也都改烂掉了
网上能找到的改webconfig的方法都试过了
然后今天早上就在那想 昨天肯定找错方向了
因为一开始是认为rdlc出错
后来想到是asp.net的ajax客户端出错 错不因该在rdlc 上 因为补丁这些也都打了
然后再把webconfig的问题也排除了 就只剩下 环境的问题了

而跟环境有关的问题的话就只有一个 就是axd的问题但是axd这边确认文件是否存在也已经去掉了所以还是不知道在哪里出错

后来仔细一看发现是这里的问题

在IIS上面的网站属性下面 会有个一个 通配符应用程序映射(执行顺序) 这里不知道为什么多了一个关于ASPNET_ISAPI.DLL的设置。

然后这边的“确认文件是否存在”被打上了勾。

然后去掉。。果然解决了问题

然后又尝试了发布几个新的网站发现在这个服务器上都会自动添加这里一条。同时确认文件是否存在都是打勾的。。而我们内部测试的服务器则没有这一项。

问题很坑爹。。但是终觉是解决了呵呵。。

之后与跟老师探讨了下得出了以下结论:

“简单来讲就是isapi是用来处理axd的 但实际上axd不存在 所以就出错  而他这里的判断  确认文件是否存在就 判断
isapi 处理的axd 存在不存在”

当然这只是探讨出来的结论。至于对错就不知道了

如果有人知道真正的原因也请告诉一下在下谢谢。。。

 

 

 

目录
相关文章
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
1144 3
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
738 0
|
机器学习/深度学习 数据采集 存储
动态渲染页面智能嗅探:机器学习判定AJAX加载触发条件
本文介绍了一种基于机器学习的智能嗅探系统,用于自动判定动态渲染页面中AJAX加载的最佳触发时机。系统由请求分析、机器学习判定、数据采集和文件存储四大模块构成,采用爬虫代理技术实现高效IP切换,并通过模拟真实浏览器访问抓取微博热搜及评论数据。核心代码示例展示了如何调用微博接口获取榜单与评论,并利用预训练模型预测AJAX触发条件,最终将结果以JSON或CSV格式存储。该方案提升了动态页面加载效率,为信息采集与热点传播提供了技术支持。
536 15
动态渲染页面智能嗅探:机器学习判定AJAX加载触发条件
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
984 23
|
消息中间件 开发框架 监控
NET任务调度框架Hangfire使用指南
Hangfire 是一个用于 .NET 应用程序的开源任务调度框架,支持长时间运行任务、定时任务等。通过简单的安装配置,即可将任务从主线程分离,提升应用性能。支持多种数据库,提供丰富的任务类型如立即执行、延迟执行和周期性任务,并有可视化管理界面 Hangfire Dashboard。还支持安全性配置及扩展插件,如 Hangfire.HttpJob,适合各种复杂场景下的任务调度需求。
1840 1
NET任务调度框架Hangfire使用指南
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
633 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
947 5
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
485 5
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
297 4
|
开发框架 .NET C#
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位。从企业应用到电子商务,再到移动开发,.NET 均展现出卓越性能,助力开发者提升效率与项目质量,推动行业持续发展。
543 4