我有一個asp.net核心應用程序,我開始通過visual studio構建,通常當我按F5或在Visual Studio中按下調試按鈕時,它工作正常。但是,如果我嘗試從命令行使用dotnet run
,它仍然可以工作,並開始在默認端口5000(我假設這是紅隼偵聽)上偵聽。 ASP.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;
}
而現在我的應用程序在任何環境下使用。
你可以嘗試'dotnet YourProject.dll'嗎?例如,'dotnet WordApp.dll' – Win
同時檢查託管環境變量。您可能在Visual Studio的情況下運行開發,在dotnet cli的情況下運行在生產環境中。 – Sanket
@Sanket事實證明你是正確的。一旦我想出如何將環境變量設置爲Development,它就像魅力一樣。你能發表一個答案,所以我可以關閉它嗎? –