【问题标题】:Run ASP.NET project inside a Windows Forms Application?在 Windows 窗体应用程序中运行 ASP.NET 项目?
【发布时间】:2016-05-09 15:42:42
【问题描述】:

我们有一个非常简单的 asp.net 项目,它由以下内容组成:Home.aspx、web.config 和一些 Home.aspx 使用的图像。此网络表单还连接到 sql server 数据库。

假设客户购买了我们的网站应用。所以我们去他们的办公室,首先在他们网络中的服务器上安装 SQL Server 数据库。

现在,我遇到了困难:一旦我们创建了数据库(并配置了 web.config),我们希望将一个 Windows 应用程序(即一个 EXE)交给我们的客户端,双击它就会打开带有将显示 [Home.aspx] 的浏览器控件的 Windows 窗体。

问题是我想在这个 Windows 可执行文件中包含所有内容。所有图像、[Home.aspx]、web.config 都将包含在此可执行文件中。 [Home.aspx] 超出此 Windows 可执行文件的唯一原因是连接到网络中的 sql server 数据库。就好像 Windows 应用程序拥有托管此网站所需的一切。

这可能吗?

谢谢。

【问题讨论】:

  • 为什么不用aspx网站安装IIS?
  • 我无法安装 IIS。另外,我不希望他们使用他们的浏览器。访问我们的 Web 应用程序的唯一方法是通过 Windows 窗体。

标签: c# asp.net .net winforms visual-studio-2015


【解决方案1】:

Dude 这样做的唯一方法是让您的 ASP.NET Web 应用程序成为主机服务器上的 Web API 或使其成为本地主机上的 API。因此,如果您尝试在客户端的机器上执行此操作,您将需要在该机器上安装 IIS。 Here is 完整指南,介绍如何在 Windows 窗体应用程序中运行 ASP.NET Web API。所以你要做的是

1:制作你的 ASP.NET Web API

2:制作您的 Windows 窗体应用程序

3:从您的 Windows 窗体应用程序调用该 API

4:享受

干杯

【讨论】:

    【解决方案2】:

    您很可能需要在您的 WinForms 应用程序中附带一个 Web 服务器,例如

    http://ultidev.com/products/UWS-Cassini-Pro/Default.aspx

    https://cassinidev.codeplex.com/

    【讨论】:

      【解决方案3】:

      显示 WebBrowser 事件处理程序的 C# 程序

      您还可以设置 Url 属性来更改当前页面。与其他控件一样,WebBrowser 提供事件处理程序。这些在加载页面和加载页面时触发。 Here

      using System;
      using System.Windows.Forms;
      
      namespace WindowsFormsApplication1
      {
          public partial class Form1 : Form
          {
          public Form1()
          {
              InitializeComponent();
          }
      
          private void Form1_Load(object sender, EventArgs e)
          {
              // When the form loads, open this web page.
              webBrowser1.Navigate(" http://localhost/Home.aspx");
          }
      
          private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
          {
              // Set text while the page has not yet loaded.
              this.Text = "Navigating";
          }
      
          private void webBrowser1_DocumentCompleted(object sender,
              WebBrowserDocumentCompletedEventArgs e)
          {
              // Better use the e parameter to get the url.
              // ... This makes the method more generic and reusable.
              this.Text = e.Url.ToString() + " loaded";
          }
          }
      }
      

      【讨论】:

      • 这不起作用。问题是在 Windows 窗体中运行该站点。在您的示例中,您假设 IIS 正在运行,但实际上并未运行。
      猜你喜欢
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      相关资源
      最近更新 更多