我有一个 asp.net 应用程序,我在其中使用 System.Windows.Forms 命名空间引用来使用 Web 浏览器控件。该应用程序在本地系统上运行良好,但在托管后显示错误。我如何嵌入 dll 以在 Web 应用程序中使用。
4 回答
回答一个 3 1/2 岁的问题很奇怪......
I. 在您的 web.config 中,添加对 Windows.Forms 的引用
<system.web>
<compilation>
<assemblies>
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
</compilation>
<system.web>
这仅在引用的 DLL 在 GAC 中时才有效。如果不是:
/Bin
在您的网站根目录中创建一个文件夹。- 在那里复制你的 DLL。
- 不要在 web.config 中添加引用。
二、在您的模块/类中,导入 Windows.Forms (VB: Imports / C#: using)
Imports System.Windows.Forms
您现在可以使用 Web 浏览器控件。不过,这有点棘手。
可能的用途包括:生成截图、AJAX 爬取(#! >> _escaped_fragment_)等
System.Windows.Forms
包含用于在运行代码的计算机上显示事物的类。当您在 PC 上进行测试时,它可以工作,因为您在与开发服务器相同的机器上运行浏览器。
在真实服务器上运行时,其中的任何内容System.Windows.Forms
都会显示在服务器上——而不是用户的 PC 上。(此外,它将显示在服务器服务会话中的隐藏桌面上)。
您不应该混合使用网络表单和 Windows 表单。无论您想做什么 - 还有另一种有效的方法,它不涉及 winforms。
不要System.Windows.Forms
在 webb 应用程序中使用
如前所述,您不能将 WinForms 控件与 ASP.NET 一起使用。
使用 iframe 显示您尝试在 webbrowser 控件中显示的任何页面:http: //www.w3schools.com/tags/tag_iframe.asp
是的,你可以做到,只需复制
system.window.form
dll 到您的 Web Bin 文件夹中,一切都会正常工作。