非常奇怪的问题......我的解决方案中有2个控制台应用程序,控制台应用程序1,当我运行它时显示控制台并将其设置为启动项目...控制台应用程序2,运行.. 。执行...但不显示控制台。
以下是代码:
public class Program
{
static void Main()
{
string baseAddress = "http://localhost:8080/";
using (WebApp.Start<StartUp>(url: baseAddress))
{
Console.Write("Service Listening at : " + baseAddress);
System.Threading.Thread.Sleep(-1);
}
}
}
这是StartUp类
public class StartUp
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
appBuilder.UseWebApi(config);
}
}
答案 0 :(得分:2)
尝试关闭Visual Studio并再次将其打开
也许这也会对其他人有帮助,因为同样的事情发生在我身上。
这是在我在IIS Express上调试ASP.Net Core项目之后发生的。我关闭了ASP.Net Core解决方案,然后在不关闭Visual Studio的情况下打开了控制台应用程序解决方案,但是控制台不会显示。因此,我关闭了Visual Studio,然后再次打开解决方案,并显示了控制台。
我正在使用Visual Studio Professional 2017版本15.9.20
答案 1 :(得分:1)
除非将子线程标记为前台线程,否则当WebApp.Start
方法返回时,控制台应用程序将终止。您的程序可能运行得如此之快,以至于您永远不会看到控制台窗口的显示。
Main
不是阻止方法,也不是Console.ReadLine()
方法中的任何后续调用。
只需在“服务收听”消息后添加Thread.Sleep(-1)
来电。不需要{{1}},因为您的代码没有在合作多任务环境中运行。
答案 2 :(得分:0)