积极答复者
关于accessviolationexception的异常

问题
-
我在winform中嵌入了一个webbrowser,在webbrowser指向了一个HTML.主要是用来浏览SVG,但是当我访问 这个Form时就会报accessviolationexception的异常.我已经装了SVGView3.03了.不知道为什么会出现这样的问题,请大侠们帮帮忙,谢谢了.
HTML中的代码如下:
<html> <body> <div id="divSVG" style="" width:507px;height:460px;margin:2px; border-right: #339966 2px solid; border-top: #339966 2px solid; border-left: #339966 2px solid; border-bottom: #339966 2px solid;> <embed id='svg' src='http://localhost:8080/oa/tomcat.svg' autostart='true' width='507px' height='460px'> </div> </body> </html>
- 已移动 Sheng Jiang 蒋晟Moderator 2010年3月27日 19:04 System.Windows.Forms (发件人:Visual C#)
答案
-
你好!
关于这个异常,文档中是这样描述的:
当非托管或不安全代码试图读写未分配或不具有访问权限的内存空间时,就会产生访问冲突。这种情况通常因为指针具有错误的值而发生。并非所有通 过错误指针的读写操作都会引发访问冲突,所以访问冲突通常指示已经通过错误指针进行多次读写操作,并且内存内容可能已损坏。因此,访问冲突几乎总是指示存 在严重的编程错误。
我没有这样做过,但是尝试过的同行说这样做会产生很多的问题,具体可以参考:
http://blog.csdn.net/firefight/archive/2007/03/02/1519413.aspx
周雪峰- 已标记为答案 KeFang Chen 2010年3月25日 2:40
-
没有什么特别的好方案。SVG Viewer 是运行在 IE 安全沙箱上的一个非托管 ActiveX,它具备较高的系统访问权限;相反,在 Windows Forms 上使用的 WebBrowser 控件是运行在托管应用程序域上的非托管 ActiveX (shdocvw.dll),它的安全级别根据设置而不尽相同,这里的访问冲突应该是 SVG Viewer 报的,这说明其应用程序未能在这种应用场景下获得测试。
两种方法可以解决此问题:
1、直接用 SVG Viewer ActiveX 控件,不要把它嵌入到 WebBrowser。通过添加 COM 引用可以做到这一点。
2、等待支持 SVG 的浏览器控件,如 IE 9。
Mark Zhou- 已标记为答案 KeFang Chen 2010年3月25日 2:40
全部回复
-
你好!
关于这个异常,文档中是这样描述的:
当非托管或不安全代码试图读写未分配或不具有访问权限的内存空间时,就会产生访问冲突。这种情况通常因为指针具有错误的值而发生。并非所有通 过错误指针的读写操作都会引发访问冲突,所以访问冲突通常指示已经通过错误指针进行多次读写操作,并且内存内容可能已损坏。因此,访问冲突几乎总是指示存 在严重的编程错误。
我没有这样做过,但是尝试过的同行说这样做会产生很多的问题,具体可以参考:
http://blog.csdn.net/firefight/archive/2007/03/02/1519413.aspx
周雪峰- 已标记为答案 KeFang Chen 2010年3月25日 2:40
-
没有什么特别的好方案。SVG Viewer 是运行在 IE 安全沙箱上的一个非托管 ActiveX,它具备较高的系统访问权限;相反,在 Windows Forms 上使用的 WebBrowser 控件是运行在托管应用程序域上的非托管 ActiveX (shdocvw.dll),它的安全级别根据设置而不尽相同,这里的访问冲突应该是 SVG Viewer 报的,这说明其应用程序未能在这种应用场景下获得测试。
两种方法可以解决此问题:
1、直接用 SVG Viewer ActiveX 控件,不要把它嵌入到 WebBrowser。通过添加 COM 引用可以做到这一点。
2、等待支持 SVG 的浏览器控件,如 IE 9。
Mark Zhou- 已标记为答案 KeFang Chen 2010年3月25日 2:40