有没有办法创建可以托管WebSocket服务器的.NET Core 控制台应用程序?
我看到了许多内容,但仅限于使用ASP.NET Core依赖注入。
我最终使用的Nuget包必须是.NET Core而不是完整的.NET。
如果我可以在控制台应用程序中使用Microsoft.AspNetCore.WebSockets
,我该怎么做?
谢谢!
答案 0 :(得分:3)
自托管ASP.net核心应用程序实际上是控制台应用程序,使用Kestrel作为服务器,您可以非阻塞地运行它,并将程序作为常规控制台继续运行,如下所示:
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.Build(); //Modify the building per your needs
host.Start(); //Start server non-blocking
//Regular console code
while (true)
{
Console.WriteLine(Console.ReadLine());
}
}
唯一的缺点是你会在开始时得到一些调试信息,但你可以通过这种修改来压制那些:
public static void Main(string[] args)
{
ConsOut = Console.Out; //Save the reference to the old out value (The terminal)
Console.SetOut(new StreamWriter(Stream.Null)); //Remove console output
var host = new WebHostBuilder()
.UseKestrel()
.Build(); //Modify the building per your needs
host.Start(); //Start server non-blocking
Console.SetOut(ConsOut); //Restore output
//Regular console code
while (true)
{
Console.WriteLine(Console.ReadLine());
}
}
答案 1 :(得分:0)
从dotnet core 3.1开始,使用vs代码,在终端dotnet new web
中创建一个空的aspnet core项目。使用该模板,您可以在服务器支持下运行控制台应用程序。