【问题标题】:Adding System.windows.Forms reference into asp.net website将 System.windows.Forms 引用添加到 asp.net 网站
【发布时间】:2012-06-06 16:58:52
【问题描述】:

我有一个 asp.net 应用程序,我在其中使用 System.Windows.Forms 命名空间引用来使用 Web 浏览器控件。该应用程序在本地系统上运行良好,但在托管后显示错误。 我如何嵌入 dll 以在 Web 应用程序中使用。

【问题讨论】:

  • 你不能这样做。你想达到什么目的?
  • 您是否只是在网页上寻找另一个网页窗口?
  • 您预期如何在服务器端应用程序中使用 Web 浏览器?
  • 嗨@JonSkeet,您可以使用网络浏览器为缩略图/预览制作屏幕截图。据我所知,这是在 .NET 框架内实现此目的的唯一本地方式。
  • @DirkBoer:我不想假设该控件的沙盒效果如何。但是,如果您希望它查看网页的实际外观,这将涉及运行 Javascript,如果没有非常仔细控制,我个人不希望在服务器上执行此操作。 (例如,你想在杀死它之前给它一个非常少量的 CPU 使用。)

标签: asp.net .net winforms


【解决方案1】:

回答一个 3 1/2 岁的问题很奇怪......

我。在您的 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 中时才有效。 如果不在:

  1. 在您的网站根目录中创建一个/Bin 文件夹。
  2. 在那里复制您的 DLL。
  3. 不要在 web.config 中添加引用。

二。在您的模块/类中,导入 Windows.Forms (VB: Imports / C#: using)

Imports System.Windows.Forms

您现在可以使用网络浏览器控件。不过,这有点棘手。

可能的用途包括:生成截图、AJAX爬取(#!>>_escaped_fragment_)等

【讨论】:

    【解决方案2】:

    System.Windows.Forms 包含用于在运行代码的计算机上显示事物的类。当您在 PC 上进行测试时,它可以正常工作,因为您在与开发服务器相同的机器上运行浏览器。

    在真实服务器上运行时,System.Windows.Forms 中的任何内容都将显示在服务器上,而不是用户的 PC 上。 (此外,它会显示在服务器服务会话中的隐藏桌面上)。

    您不应该混合使用网络表单和 Windows 表单。无论您想做什么 - 还有另一种可行的方法,它不涉及 winform。

    不要在 webb 应用程序中使用System.Windows.Forms

    【讨论】:

      【解决方案3】:

      如前所述,您不能在 ASP.NET 中使用 WinForms 控件。

      使用 iframe 显示您尝试在网络浏览器控件中显示的任何页面:http://www.w3schools.com/tags/tag_iframe.asp

      【讨论】:

        【解决方案4】:

        是的,你可以做到,只需复制

        system.window.form

        dll 到您的 Web Bin 文件夹中 一切都会好起来的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-11
          • 2016-11-13
          • 1970-01-01
          • 2015-02-12
          相关资源
          最近更新 更多