解决MS Office下载网站数据失败的问题
最近遇到在MS Excel中建立的Web Query在创建完成后过了一段时间(或关闭文件后再次打开文件并刷新数据)出现无法刷新的问题,点击刷新时报错如下:
无法下载您要求的信息。

这是一个很不友好的报错,从提示的信息来看,似乎是这个网站无法打开,然而在浏览器里打开却没有任何问题(采用的是匿名用户的身份验证)。
刚为了获得更多的错误信息,我查看了系统的事件日志,发现了这么一条记录:
Object reference not set to an instance of an object. at xxx.Global.Session_Start(Object sender, EventArgs e) at System.Web.SessionState.SessionStateModule.RaiseOnStart(EventArgs e) at...
看来是在访问这个网页的时候抛出了未处理的异常,于是我去查了网站的Global.asax.cs文件,果然在Session_Start方法中的确有访问对象
Request.Headers["Accept-Language"]的代码,因为Session会存在一段时间,所以Session_Start方法没有在刚建立完查询后刷新时就被调用,于是我在此方法中加了判断对象是否为空的代码后问题解决了。
总结:由此可见,使用Office从网站中提取数据时,如果访问的网页存在服务器端的异常,则会出现这类无法下载的报错,而不会显示异常的详细信息,需要到服务器端的事件日志中查看。在Office中建立查询的时候,访问网站跟打开浏览器访问网站是一样的效果,因此出现的行为和表现一致。而在建立完查询后,刷新网站获取数据时,相比浏览器,有些功能是被精简掉了,比如Headers["Accept-Language"]等在刷新网站数据时发送的Request请求中是不存在的,通过网络抓包软件Fiddler分析:
浏览器访问网站时的请求头信息:

Office软件通过Web Query访问网站时的请求头信息:

。看来以后建Web Query时需要注意,也希望此文对遇到同样问题的小伙伴有帮助和指导意义,同时欢迎高手提出意见和补充。
解决MS Office下载网站数据失败的问题的更多相关文章
- 解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused."
缘由: 更新sdk,遇到了更新下载失败问题: Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Fetch ...
- 【问题&解决】解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused”的问题
缘由: 更新sdk,遇到了更新下载失败问题: Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xmlFetche ...
- 解决Android SDK下载和更新失败问题
今天更新sdk报错如下: Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml. 说dl- ...
- 解决Android SDK下载和更新失败的方法(Win系统) 和离线安装
http://jingyan.baidu.com/article/a3a3f811f370558da2eb8a94.html http://jingyan.baidu.com/article/636f ...
- 解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题 (转载)
解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题 发表于 2017-09-15 | 更新于 2018-04-29 | 分类于 Linux | 评论数: ...
- Genymotion虚拟镜像下载慢或者失败的解决办法
Genymotion虚拟镜像下载慢或者失败的解决办法 http://files2.genymotion.com/dists/8.0.0/ova/genymotion_vbox86p_8.0_18061 ...
- RubyGem 下载时连接失败的解决方法
RubyGem 下载 gem 包失败,有一定原因是 https 导致的. 搜索了很久,找到一个解决的方法. 1.下载 cacert.pem,也就是 curl 的证书. http://curl.haxx ...
- 下载额外数据文件失败 以下软件包要求安装后下载附加数据,但其数据无法下载或无法处理 ttf-mscorefonts-installer
故障显示: 一些软件包的数据文件无法下载 以下软件包要求安装后下载附加数据,但其数据无法下载或无法处理. ttf-mscorefonts-installer 这是一个永久错误,系统中的这些软件包将无法 ...
- 解决从dockerhub上下载debian:jessie失败
解决从dockerhub上下载debian:jessie失败 笔者使用docker build 构建镜像出现下面的错误 Step 1/12 : FROM debian:jessie Get https ...
随机推荐
- Spring Data JPA教程, 第五部分: Querydsl(未翻译)
The fourth part of my Spring Data JPA tutorialdescribed how you can implement more advanced queries ...
- Unity3D之Mecanim动画系统学习笔记(四):Animation State
动画的设置 我们先看看Animation Clip的一些设置: Loop time:动画是否循环播放. 下面出现了3个大致一样的选项: Root Transform Rotation:表示为播放动画的 ...
- linq to sql 三层架构中使用CRUD操作
/// <summary> /// 数据层 /// </summary> public partial class GasBottles : IGasBottles { #re ...
- 使用Unity制作游戏关卡的教程(三)
转自:http://gamerboom.com/archives/75593 作者:Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth>的关 ...
- Get-ChildItem参数之 -Exclude,Filter,Recurse应用
$p = "D:\PSScript" gci $p -Exclude "UpdateLog" #排除子目录"UpdateLog",但是后面不 ...
- git 与 github 最简单的用法
今天发现cygwin里已经装了git,所以顺便测试一下git是怎么用的. 大概最简单的用法是这样的: 1.在github创建一个repository.复制右边那个 HTTPS clone URL 2. ...
- 判断手机andriod还是iphone
手机识别:var isAndroid = navigator.appVersion.toLowerCase().indexOf(‘android’) >= 0,isIphone = naviga ...
- 如何获取input自定义属性
javascript方法: <input type="checkbox" name="sdf" data="这是自定义属性" /& ...
- SQLite数据库中获取新插入数据的自增长ID
SQLite数据库中有一有列名为ID的自增列,项目需求要在向数据库在插入新数据的同时返回新插入数据行的ID. 我这里用事务,把插入和查询语句通过ExecuteReader一起提交,返回DbDataRe ...
- [Qt5] 减少dll依赖和大小(特别是webkit的大小和依赖)
Qt5的依赖太多, 而且很dll非常大. 折腾了好久, 摸索了一些精简的方法. webkit是个非常蛋疼的东西, 依赖超多, 又很庞大. 所以需不需要webkit是完全不同的. 如何编译Qt5可以参考 ...