2016-12-20 279 views
-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); 
      } 
     } 
    } 

這裏是類時啓動Main方法返回,除非一個子線程標記爲前臺線程

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

你是否已經在調試器中檢查了應用程序,看它是否命中了Console.Write? – mrogers

+0

是的,我有,它確實有效,然後我改變了啓動並重建它,然後 –

+0

告訴我們兩個**控制檯應用程序的代碼 – MickyD

回答

0

控制檯應用程序將終止。您的程序運行速度可能非常快,您永遠無法看到顯示的控制檯窗口。

WebApp.Start不是阻止方法,您的Main方法中也不會有任何後續調用。

只需在「服務監聽」消息後添加一個Console.ReadLine()呼叫。不需要Thread.Sleep(-1),因爲您的代碼不在協同多任務環境中運行。

+0

我試過了,但沒有奏效。謝謝 –

+0

它是如何「不起作用」的?你有沒有觀察到同樣的行爲? – Dai

+0

我把Console.ReadLine();拿出Thread.Sleep(-1); ...按CMD 5,它直接進入調試模式...但沒有窗口 –

相關問題