如何将控制台C#应用程序添加到ASP.NET网站

本文关键字:ASP NET 网站 添加 应用程序 控制台 | 更新日期: 2023-09-27 18:26:19

我的问题与此线程有些相似:如何在Asp.Net网站中包含另一个项目Console Application.exe?

然而,我被要求问一个新问题,因为我的问题没有得到回答,我无法对该帖子发表评论。

所以,我的情况是:我有一个C#应用程序,它被编译为exe(目前)。它作为桌面应用程序运行良好。现在我需要在网站上托管应用程序,这样用户就可以通过浏览器使用它。

我认为asp.net将是一个很好的起点,并创建了一个网站应用程序。现在,我该如何引用C#应用程序文件,以便从新的WebSite应用程序中调用这些方法?

我曾尝试在控制台应用程序中包含构建后事件,以将文件复制到网站文件夹,但我仍然无法引用它们。

对于我正在尝试做的事情,任何其他建议也欢迎:)

编辑:我希望应用程序在服务器上运行,然后我将在用户的浏览器上显示其输出。

如何将控制台C#应用程序添加到ASP.NET网站

假设我理解你想要什么:

1-您需要将您的功能转移到Class Library项目。

2-在您的网站中添加对DLL的引用

3-根据自己的喜好使用功能。

但是,不能直接使用类型为.exe的程序集文件中的功能。

如果你不需要运行控制台应用程序,只需要使用控制台应用程序中定义的方法,那么我会在一个单独的类库中重构这些方法,然后在我的web应用程序中添加对类库的引用。然后在网页中构建一个接口,调用适当的方法。

下面是MSDN中的一个演练,向您展示如何使用类库

创建web应用程序项目

您不应该在服务器上运行控制台应用程序,因为这是BAD!在Windows上,为每个请求创建一个全新的进程不是一个好主意。

重构控制台应用程序以采用TextWriter,或者(在我看来更好,但可能需要更多的重构)以某种逻辑方式返回结果。

在极端情况下,你只需发送Console.Out到库和Response.Output.就可以逃脱惩罚

你似乎不太可能真的只想这么做,但这可能是你能逃脱的最起码的事情,也不是很糟糕。

按照Console.WriteLine("Hello World")的思路思考:

var lib = new MyLib(Console.Out);
lib.DoSomething();

这种情况下的ctor是:

public MyLib(TextWriter writer)
{
  _writer = writer;
}

其中DoSomething()是:

public void DoSomething()
{
   _writer.WriteLine("Hello World");
}

然后,在web上,您将输出需要输出的内容,并通过首先输出<pre>标签,然后执行以下操作将输出放在那里:

var lib = new MyLib(Response.Output);
lib.DoSomething();

public string TellMeSomething()
{
  return "Hello World";
}

我几乎不想推荐这个,因为我认为完全重构它会更好。因此DoSomething变成了TellMeSomething,实现类似于:

public string TellMeSomething()
{
  return "Hello World";
}