簡體   English   中英

如何將控制台C#應用程序添加到ASP.NET WebSite?

[英]How do I add a console C# application to a ASP.NET WebSite?

我的問題有點類似於這個主題: 如何在Asp.Net網站中包含另一個項目控制台應用程序exe?

然而,我被指示提出一個新問題,因為我的問題沒有得到回答,我無法評論該主題。

所以,我的情況是這樣的:我有一個C#應用程序,編譯為exe(現在)。 它可以作為桌面應用程序正常工作。 現在我需要在網站上托管應用程序,以便用戶可以通過瀏覽器使用它。

我認為asp.net是一個開始創建WebSite應用程序的好地方。 現在我該如何引用C#應用程序文件,以便可以從新的WebSite應用程序調用這些方法?

我試圖在控制台應用程序中包含post build事件以將文件復制到WebSite文件夾,但我仍然無法引用它們。

對我正在嘗試做的任何其他建議也歡迎:)

編輯:我想要在服務器上運行應用程序,然后我將在用戶的瀏覽器上顯示其輸出。

假設我明白你想要什么:

1-您需要將功能轉移到Class Library項目。

2-在您的網站中添加對DLL引用

3-根據需要使用功能。

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

如果您不需要運行控制台應用程序並且只需要使用控制台應用程序中定義的方法,那么我將在單獨的類庫中重構這些方法,然后在我的Web應用程序中添加對類庫的引用。 然后在調用適當方法的網頁中構建一個接口。

以下是MSDN的演練,向您展示如何使用類庫創建Web應用程序項目

您不應該在服務器上運行控制台應用程序,因為它很糟糕! 在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");
}

在網絡上,您將輸出您需要輸出的內容並將輸出放在那里,首先輸出<pre>標簽,然后執行以下操作:

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


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

我幾乎不想推薦這個,因為我認為完全重構它會更好。 所以DoSomething成為TellMeSomething和實現類似的東西:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM