通过Web应用执行.NET控制台程序

在某些情况下,可能需要使用控制台应用程序来执行特定的任务(例如生成报告),但同时希望这些任务能够通过Web应用程序来触发。本文将介绍如何通过ASP.NETWeb应用程序来执行.NET控制台应用程序,并在执行过程中修改配置文件。

控制台应用程序通常用于执行后台任务,如数据处理、文件生成等。而Web应用程序则提供了用户交互的界面。在某些特定场景下,可能需要将这两种类型的应用程序结合起来使用。例如,可能需要通过Web界面来触发一个控制台应用程序,以执行一些特定的任务。

步骤概述

将通过以下步骤来实现这一目标:

  • 创建一个简单的控制台应用程序。
  • 创建一个ASP.NETWeb应用程序。
  • 创建两个方法,分别用于修改配置文件和执行控制台应用程序。

创建简单的控制台应用程序

首先,将创建一个简单的控制台应用程序。在这个示例中,将创建一个名为“ProcessKiller”的应用程序,它可以用来结束后台进程,例如Excel、计算器或其他任何想要结束的进程。

以下是控制台应用程序的完整C#代码:

using System; using System.Collections; using System.Configuration; using System.Diagnostics; namespace ProcessKiller { class Program { static void Main(string[] args) { string ApplicationName = ConfigurationManager.AppSettings["ApplicationName"].ToString(); Process[] Processes = Process.GetProcessesByName(ApplicationName); foreach(Process process in Processes) { process.Kill(); } } } }

接下来,需要在app.config文件中做一些配置。将在app.config文件中创建一个键值对,键名为"ApplicationName",并将默认值设置为"calc"。

app.config文件的内容如下:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="ApplicationName" value="calc" /> </appSettings> </configuration>

创建ASP.NETWeb应用程序

接下来,将创建一个简单的ASP.NETWeb应用程序。在这个示例中,将创建一个名为“WebKiller”的Web应用程序,并在其中添加一个Default.aspx页面。只需要创建一个文本框,用于更改控制台应用程序的app.config文件中的"ApplicationName"键的值,同时创建一个按钮,用于通过点击来执行控制台应用程序。

以下是ASP.NET页面的代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebKiller.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Execute" OnClick="Button1_Click" /> </div> </form> </body> </html>

创建修改配置文件和执行控制台应用程序的方法

在这一步中,将创建Web应用程序的后台代码。将为之前创建的按钮创建一个事件处理方法,并确保在Visual Studio的事件窗口中创建了空的事件处理方法。

将创建一个void方法来更改控制台应用程序的app.config文件。将在按钮事件方法中调用这个方法。以下是这个方法的代码:

private void ChangeValueOfKeyConfig(string ProcessName) { string tAppPath = @"E:\ProcessKiller\ProcessKiller\bin\Debug"; string tProcessName = TextBox1.Text; string tAppPathWithConfig = "" + tAppPath + "\\ProcessKiller.exe.config"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(tAppPathWithConfig); foreach (XmlElement element in xmlDoc.DocumentElement) { if (element.Name == "appSettings") { foreach (XmlNode node in element.ChildNodes) { RenameItemConfig(node, "ApplicationName", ProcessName); // RenameItemConfig(node, "Other Key", "Other Value"); } } } xmlDoc.Save(tAppPathWithConfig); } private void RenameItemConfig(XmlNode node, string Key, string value) { if (node.Attributes.Item(0).Value == Key) { node.Attributes.Item(1).Value = value; } }

注意,可以通过RenameItemConfig()方法来更改app.config文件中的键的值。接下来,将填写按钮事件方法。首先,需要获取创建的文本框的值,然后需要定位想要执行的控制台应用程序的路径,然后可以在按钮点击事件方法中调用ChangeValueOfKeyConfig()方法,然后再次打开命令提示符(CMD),并通过CMD执行控制台应用程序。

以下是Default.aspx.cs文件中的完整代码:

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Xml; namespace WebKiller { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { ChangeValueOfKeyConfig(TextBox1.Text); System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo.FileName = "cmd"; process.StartInfo.WorkingDirectory = @"E:\ProcessKiller\ProcessKiller\bin\Debug"; process.StartInfo.Arguments = "/c \"" + "ProcessKiller.exe\"" ; process.Start(); } private void ChangeValueOfKeyConfig(string ProcessName) { string tAppPath = @"E:\ProcessKiller\ProcessKiller\bin\Debug"; string tProcessName = TextBox1.Text; string tAppPathWithConfig = "" + tAppPath + "\\ProcessKiller.exe.config"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(tAppPathWithConfig); foreach (XmlElement element in xmlDoc.DocumentElement) { if (element.Name == "appSettings") { foreach (XmlNode node in element.ChildNodes) { RenameItemConfig(node, "ApplicationName", ProcessName); // RenameItemConfig(node, "Other Key", "Other Value"); } } } xmlDoc.Save(tAppPathWithConfig); } private void RenameItemConfig(XmlNode node, string Key, string value) { if (node.Attributes.Item(0).Value == Key) { node.Attributes.Item(1).Value = value; } } } }

演示

现在可以演示项目了。将强制结束Excel应用程序。所需要做的是:在浏览器中打开/运行Web应用程序,并在输入文本框中填写单词"excel"(全部小写),然后在点击"Execute"按钮之前,打开Microsoft Office Excel,如果Excel打开,点击"Execute"按钮。控制台应用程序将执行它的工作,它将强制关闭/结束Excel。现在,已经完成了,可以做一些更改,可以通过在输入文本框中填写"calc"来关闭计算器应用程序,或者关闭任务管理器的"Processes"选项卡中显示的其他应用程序。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485