我可以在IE8中显示Windows用户控件

Joh*_*ohn 5 .net internet-explorer winforms

我有一个遗留的Windows窗体应用程序,我希望像Web应用程序一样显示内部用户的浏览器(IE8).我一直在研究的方法是创建一个Windows窗体库(dll)并在浏览器中显示它.有很多网页告诉我如何做到这一点:

但我无法让它发挥作用.我已经制作了一个简单的Windows控件库,并构建了DLL.我把它放在IIS 7.5站点的顶级目录中,以及一个像这样的html文件:

<html>
   <body>
    <object id='c' classid='http:TestWinCtrlLib.dll#TestWinCtrlLib.UserControl1' height='300' width='400'>
    </object>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的浏览器显示一个300x400的盒子,左上角有一个小的"图片"图标.起初,IIS拒绝提供.dll文件,提供403.2和401.2错误,但现在我已正确设置IIS持久性属性,日志表明它正在成功提供.

2012-05-01 01:28:50 ::1 GET /form.html - 8008 - ::1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+WOW64;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E) 200 0 0 1
2012-05-01 01:28:50 ::1 GET /TestWinCtrlLib.dll - 8008 - ::1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+WOW64;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E) 200 0 0 23
Run Code Online (Sandbox Code Playgroud)

我甚至不知道出了什么问题.上面的第一个链接有一个关于错误报告的部分,我已将这些密钥添加到注册表中,但我没有看到任何错误.我尝试从cmd提示符启动iexplore,以防错误显示在标准输出上,但什么都没有.

错误报告

代码下载过程使用以下两个注册表设置来控制使用Internet Explorer部署的托管代码可执行文件的错误报告.

  • HKLM\SOFTWARE\Microsoft.NETFramework\ExposeExceptionsInCOM
  • HKCU\SOFTWARE\Microsoft.NETFramework\ExposeExceptionsInCOM

...

调试使用Internet Explorer部署的托管代码时,可以使用这些设置的值来查找有关代码下载失败的详细信息.例如,这允许您在抛出异常时查看堆栈跟踪信息,而不是依赖Internet Explorer提供的错误报告,而Internet Explorer是为最终用户而非开发人员设计的.

是否可能不再支持此功能?我发现的大多数参考文献似乎都是2007-2010.也许ClickOnce是现在唯一的方法.我可以让它工作,但代码运行在自己的窗口,而不是在浏览器内.

我尝试使用.Net frameworks 3.5 Client Profile和4.0 Client Profile编译库.但他们似乎给出了同样的结果.

欢迎任何帮助 - 谢谢.

Ved*_*ran 1

您可以考虑使用远程桌面服务来代替。它通过 ActiveX 运行,因此仅支持 Internet Explorer(尽管有第 3 方解决方案使您能够通过非 IE 浏览器或移动电话访问 RDS)。

有关指南和文档,请访问: http://technet.microsoft.com/en-us/library/dd647502(v=ws.10)