昨天刚刚完成了一个从网页上提取内容的ASP.NET程序。因为目标网页内容比较复杂,所以采用了WebBrowser来代替WebClient。

但是,在本地写好的程序,放到了服务器上就停止工作了,也找不到任何异常提示……

在浪费了十几个小时的人生之后,终于发现是因为缺少了引用的程序集——为了处理网页上较为复杂的网页元素,我在程序中使用了MSHTML中声明的接口,然而不知道出于什么样的原因,在项目的引用列表中MSHTML被标记为不复制到本地,发布到服务器上的时候自然也不会包含。更有趣的是,期间我编写WinForms应用程序来检验程序逻辑,放到服务器上运行时也没有任何加载错误,而是单纯地不能使用使用了来自MSHTML的接口的过程,害我以为是事件处理过程哪里写错了……

另一个需要注意的事情是:

有文章指出在ASP.NET中使用WebBrowser最重要的条件是使用STA线程模型,然后使用System.Forms.Application.Run来创建消息循环;文章中还说,对于ASP.NET来说WinForm窗体是不必要的,所以System.Forms.Application.Run(new System.Forms.ApplicationContext())就可以了——但经实际测试,在Windows Server 2003 + IIS6上运行的话,如果WebBrowser并没有创建在窗体上,则在发生跳转时不会引发DocumentComplated事件;而在Windows 7+WebDev Server上是不会观察到这种现象的。

除了WebBrowser以外,还有一些关于WinForms的发现:

在Load事件中调用Hide方法可能没有效果,而放在Shown中就可以了——但用户会观察到窗体一闪而过。

覆盖SetVisibleCore可以阻止主窗体显示,但也会导致很多事件不能正常触发。
飞秋官网:http://www.freeeim.com/

『飞秋』在ASP.NET服务器端过程中使用WebBrowser的注意事项相关推荐

  1. 『飞秋』关于ASP.NET MVC+Repository+Service架构的一些思考

    『飞秋』关于ASP.NET MVC+Repository+Service架构的一些思考 看了一些ASP.NET MVC开源项目后的一些想法,关于ASP.NET MVC+Repository+Servi ...

  2. 『飞秋』Windows7新功能体验(1):为Windows 7 Media Center安装网络电视(Internet TV)

    『飞秋』Windows7新功能体验(1):为Windows 7 Media Center安装网络电视(Internet TV) 在Windows 7许多的新功能里,娱乐功能也做了很大的改进: Dire ...

  3. 『飞秋』小项目心得交流

    『飞秋』小项目心得交流 <!--[endif]--> 最近网站首页改版,我负责前台页面的编写,一个很小的任务,从中我却学习到了很多东西,现总结一下 和大家分享一下,希望对大家有用,也希望能 ...

  4. 『飞秋』在.NET 4中调用GDAL库时遇到的问题及解决方法

    『飞秋』在.NET 4中调用GDAL库时遇到的问题及解决方法 最近需要在.NET 4的环境中调用GDAL库.GDAL本身是一套非托管类库,不过还好提供了用SWIG做的托管的Wrapper. 可以在FW ...

  5. 『飞秋』WCF热门问题编程示例

    WCF热门问题编程示例(4):WCF客户端如何异步调用WCF服务? Posted on 2010-08-01 14:28 Frank Xu Lei 阅读(296) 评论(3) 编辑 收藏 所属分类: ...

  6. 『飞秋』Html.Label的缺陷及补救办法

    在最近开发的项目中,应用了Html.LabelFor(TModel)来生成<lable/>标签,同时配合Html.TextBoxFor(TModel)来生成<Input/>标签 ...

  7. 『飞秋』测试驱动开发TDD系列(二)

    引言 今天我们来做一个TDD的小例子.通过一个栈的实现来体验一下TDD的过程.在本系列的代码示例中,使用VS2010作为IDE工具,NUnit作为测试辅助工具.关于NUnit的使用,在园子中已经有很多 ...

  8. 【飞秋】使用C++语言创建Silverlight中的VisualState

    Silverlight中的VisualState(可视状态)是一个非常重要的概念,使用VisualState,可以将界面的各个状态进行有效的区隔开,并进行单独的设计,并且可以在状态切换时实现动画效果, ...

  9. 飞凌嵌入式RK3399开发板使用过程中问题实录及解决思路

    飞凌RK3399的开发板,已经推出了一段时间,根据飞凌嵌入式技术服务部统计的客户问题反馈,整理了一份客户在使用RK3399开发板过程中经常遇到的几个问题,并提供了解决思路. RK3399开发板简介: ...

最新文章

  1. 英特尔cpu发布时间表_英特尔第11代桌面CPU将会支持PCIe4.0,Z490主板或可支持PCIe4.0...
  2. 【重要预警】“永恒之蓝”漏洞又现新木马 组成僵尸网络挖矿虚拟货币
  3. 解决sybase数据库的死锁问题
  4. java.lang.String_自己写的java.lang.String可以让jvm加载到吗?
  5. 6.1 Tensorflow笔记(基础篇):队列与线程
  6. html与cgi脚本的配合使用
  7. centos6设置静态IP
  8. 人人皆知Python功能,你还不了解嘛?
  9. POJ3259-负权回路判定
  10. Intouch使用SIDirect OIServer 连接西门子PLC S7-300
  11. BOJ 2773 第K个与m互质的数
  12. Centos 远程桌面管理工具
  13. nio java是什么_JAVA NIO是什么(zz)
  14. C# 根据出生日期解析 对应星座
  15. 计算机网络中传输速率 带宽 吞吐量三者的区别
  16. mac下使用python3_mac 下使用python3运行ride
  17. 跟小博老师一起学JSP ——通信作用域
  18. 记一次js文件AES加密的key与iv逆向分析
  19. 实现计算器(C++版 )
  20. ab753变频器参数怎么拷贝到面板_富士和三菱变频器面板参数的拷贝方法

热门文章

  1. 新经济、新选择——人才流动与迁徙2021
  2. python not in range1002无标题_Python中偶尔遇到的细节疑问(一):去除列名特殊字符、标准差出现nan、切片索引可超出范围、range步长、众数...
  3. 基于百度贴吧的HIV高危人群特征分析
  4. 作者:刘峰(1974-),男,中国科学院计算机网络信息中心高级工程师
  5. 【算法分析与设计】找到最重的球
  6. 【数据库系统】关系模型、关系、元组、属性、关系实例
  7. 生成指定序列的前一字典序序列(洛谷P2525题题解,C++语言描述)
  8. 一个使用Logging Application Block的小问题[xgluxv]
  9. phpmyadmin在centos 7中安装
  10. NVRH.265:鱼与熊掌不兼得?不见得!