我试图创建一个简单的控制台应用程序,作为本地主机服务器。该应用程序的重点是与另一个.net应用程序进行通信。
我已经成功创建了该应用程序,可以从Visual Studio中正常运行。但是,当我尝试从控制台或其他.net应用程序(使用Process.Start)运行该应用程序时。它无法按预期工作。
据我所知,这是因为它需要自我托管?
我用来创建webapi应用程序的教程是here。所以我的Program.cs看起来像这样:
static void Main(string[] args)
{
Console.WriteLine("Starting program");
SetupHostAndServices();
}
private async static void SetupHostAndServices()
{
var host = CreateHostBuilder().Build();
host.Run();
Console.ReadLine();
}
public static IHostBuilder CreateHostBuilder()
{
return Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(webHost =>
{
webHost.UseStartup<Startup>();
}).ConfigureServices(services =>
{
});
}
字符串
要从我的另一个应用程序启动webapi控制台应用程序,我这样做:
System.Diagnostics.ProcessStartInfo StartInfo = new System.Diagnostics.ProcessStartInfo
{
FileName = GetServicePath(type),
Arguments = args,
UseShellExecute = true,
RedirectStandardOutput = false,
};
System.Diagnostics.Process process = new System.Diagnostics.Process
{
StartInfo = StartInfo,
};
process.Start();
型
当控制台应用程序启动时,它不会像在Visual Studio中那样执行。例如,它正在侦听端口5000,这不是我在LaunchSettings.json文件中定义的端口。它似乎也陷入了一个奇怪的POST循环。
1条答案
按热度按时间gopyfrb31#
最终使用Kestel进行自托管。我的主机构建器现在看起来像这样:
字符串