2016-12-20 8 views
-2

Sehr seltsames Problem ... Ich habe 2 Konsolenanwendungen in meiner Lösung, Konsolenanwendung 1, zeigt die Konsole an, wenn ich sie ausführe und sie als Startprojekt eingerichtet habe. Console Application 2, runs ... führt ... aus, zeigt aber die Konsole nicht an. HierWarum zeigt meine Konsolenanwendung keine Konsole?

ist der Code:

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); 
      } 
     } 
    } 

Hier ist die Klasse 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); 
     } 
    } 
+3

Haben Sie die App im Debugger durchlaufen, um zu sehen, ob sie die Console.Write erreicht? – mrogers

+0

Ja, ich habe und es funktioniert, es funktionierte zuerst und dann machte ich eine Änderung an der StartUp und baute es neu und es funktionierte danach nicht –

+0

Zeigen Sie uns den Code für ** beide ** Konsole apps – MickyD

Antwort

0

Eine Konsolenanwendung beenden, wenn die Main Methode zurückgibt, es sei denn, ein Kind Thread als Vordergrund Faden markiert ist. Es ist möglich, dass Ihr Programm so schnell ausgeführt wird, dass das Konsolenfenster nicht angezeigt wird.

WebApp.Start ist keine Blockierungsmethode, auch keiner der nachfolgenden Aufrufe in Ihrer Main Methode.

Fügen Sie einfach einen Console.ReadLine() Anruf nach Ihrer Nachricht "Service hören" hinzu. Thread.Sleep(-1) ist nicht erforderlich, da Ihr Code nicht in einer kooperativen Multitasking-Umgebung ausgeführt wird.

+0

Ich habe das versucht, aber es hat nicht funktioniert. danke –

+0

Wie hat es "nicht funktioniert"? Hast du das gleiche Verhalten beobachtet? – Dai

+0

Ich setze Console.ReadLine(); nahm Thread.Sleep (-1) heraus; ... gedrückt cmd 5, geht es direkt in den Debug-Modus ... aber kein Fenster –

Verwandte Themen