2017-08-07 29 views
1

ビジュアルスタジオからビルドを開始したasp.netコアアプリケーションがあります。通常、F5キーを押すかビジュアルスタジオのデバッグボタンを押すと正常に動作します。ASP.Netコアアプリケーションはビジュアルスタジオで動作しますが、ドットネットは動作しません

しかし、私がコマンドラインからdotnet runを使用しようとすると、それでも動作し、デフォルトのポート5000でリッスンを開始します(これはkestrelのリスニングであると仮定しています)。 enter image description here

しかし、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の場合は「開発」、ドットネットの場合は「プロダクション」で動作している可能性があります。 – Sanket

+0

@Sanketあなたが正しいと分かった。環境変数を「開発」に設定する方法を理解したら、それは魅力的な働きをしました。私はこれを閉じることができるように答えとして投稿できますか? –

答えて

2

の値がASPNETCORE_ENVIRONMENTという変数が異なるためにエラーが発生しました。 Visual Studioの場合はDevelopmentに設定され、dotnet cliの場合は(問題のスクリーンショットにあるように)Productionでした。

コマンドの下に使用し、コマンドラインを使用してASPNETCORE_ENVIRONMENT変数を設定するには - ホスティング環境を設定する方法の詳細については

setx ASPNETCORE_ENVIRONMENT "Development" 

は、このarticleを参照してください。

関連する問題