5

我有一个旧的 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>

我的浏览器显示一个 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

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

错误报告

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

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

...

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

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

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

欢迎任何帮助 - 谢谢。

4

1 回答 1

1

您可以考虑为此使用远程桌面服务。它在 ActiveX 上运行,因此仅支持 Internet Explorer(尽管有 3rd 方解决方案可让您通过非 IE 浏览器或手机访问 RDS)。

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

于 2012-06-04T21:31:45.390 回答