2017-08-07 113 views
1

我有一個asp.net核心應用程序,我開始通過visual studio構建,通常當我按F5或在Visual Studio中按下調試按鈕時,它工作正常。但是,如果我嘗試從命令行使用dotnet run,它仍然可以工作,並開始在默認端口5000(我假設這是紅隼偵聽)上偵聽。 enter image description hereASP.Net核心應用程序在visual studio中工作,但不能與dotnet運行

但是,如果我嘗試通過任何瀏覽器使用http://localhost:5000訪問頁面,我只是得到錯誤說無法連接。我明白,如果我從Visual Studio運行,它會自動將我的應用程序放在IIS後面,但我不明白爲什麼它不起作用,如果應用程序只是自我託管。

我想將我的項目移動到Linux環境,這是目前似乎阻止我的唯一的東西。我已經通過cli創建了新的dotnet應用程序進行了測試,如果我嘗試通過瀏覽器訪問這些應用程序,這很好,但似乎我在VS中創建的這個特定應用程序無法正常工作。

dotnet --version回報1.0.4

編輯(詳細解答)

所以添加到下面SANKET的回答,我也想通了的真正原因,如果我把我的ASPNETCORE_ENVIRONMENT我的應用程序只工作發展。

事實證明,我設定了一個測試郵件服務只有被配置爲,如果我的環境是發展的,像這樣:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, 
     WorldContextSeedData seeder) 
    { 

     if (env.IsEnvironment("Development")) 
     { 
      app.UseDeveloperExceptionPage(); 
      loggerFactory.AddDebug(LogLevel.Information); 
     } 
    } 

但在我的控制器之一,我已經initalized郵件服務而不檢查環境像這樣:

public AppController(IMailService mailService, IConfigurationRoot config, WorldRepository repository, ILogger<AppController> logger, IHostingEnvironment env) 
{ 
    _env = env; 
    _mailService = mailService; 
    _config = config; 
    _repository = repository; 
    _logger = logger; 
} 

當我決定爲分段環境配置UseDeveloperExceptionPage()和它,因爲我跑它在我的問題是,一旦變得明顯,我意識到這個問題。我的控制器類嘗試初始化郵件服務,當它尚未配置在第一位。所以我做了一些改變,我的控制器像這樣:

 public AppController(
#if Development 
      IMailService mailService, 
#endif 
      IConfigurationRoot config, 
      IWorldRepository repository, ILogger<AppController> logger, IHostingEnvironment env) 
     { 
      _env = env; 
#if Development 
      _mailService = mailService; 
#endif 
      _config = config; 
      _repository = repository; 
      _logger = logger; 
     } 

而現在我的應用程序在任何環境下使用。

+0

你可以嘗試'dotnet YourProject.dll'嗎?例如,'dotnet WordApp.dll' – Win

+1

同時檢查託管環境變量。您可能在Visual Studio的情況下運行開發,在dotnet cli的情況下運行在生產環境中。 – Sanket

+0

@Sanket事實證明你是正確的。一旦我想出如何將環境變量設置爲Development,它就像魅力一樣。你能發表一個答案,所以我可以關閉它嗎? –

回答

2

發生錯誤的原因是值爲ASPNETCORE_ENVIRONMENT變量不同。在Visual Studio的情況下,它被設置爲Development,並且在dotnet cli的情況下(正如你可以在截圖中看到的那樣),它是Production

要使用命令行設置ASPNETCORE_ENVIRONMENT變量,使用下面的命令 -

setx ASPNETCORE_ENVIRONMENT "Development" 

有關如何設置託管環境,請參閱該article更多信息。

相關問題