2

私はVS 2015 Update3を使用しています。 私はVSに私がポートで40000VS 2015はKestrelを使用していますか?

を実行するために、IIS Expressを構成している、これはlaunchSettings.jsonは

どのように見えるかです

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var host = new WebHostBuilder() 
      .UseKestrel()  
      .UseUrls("http://*:5000")   
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build(); 

     host.Run(); 
    } 
} 

次Program.csのコードでASP.NETコアウェブAPIを持っています

{ 
    "iisSettings": { 
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": { 
     "applicationUrl": "http://localhost:40000/", 
     "sslPort": 0 
    } 
    }, 
    "profiles": { 
    "IIS Express": { 
     "commandName": "IISExpress", 
     "launchBrowser": true, 
     "launchUrl": "api/workunit", 
     "environmentVariables": { 
     "ASPNETCORE_ENVIRONMENT": "Development" 
     } 
    }, 
    "Api": { 
     "commandName": "Project", 
     "launchBrowser": true, 
     "launchUrl": "http://localhost:5000/api/values", 
     "environmentVariables": { 
     "ASPNETCORE_ENVIRONMENT": "Development" 
     } 
    } 
    } 
} 

次に、F5キーを押してVisual Studioを使用してアプリケーションを実行します。 APIにリクエストをすると、結果が返ってくるので、すべて正常に動作します。
Program.csには.UseIISIntegration()があります。だから私はIIS Expressにリクエストが来たときに印象に残っていました。そのリクエストをKestrelに転送するだけです。 私は、IIS ExpressとKestrelの両方を2つの異なるポートで同時に実行する必要があると考えました。

しかし、netstat -abコマンドを実行したときに、IIS expressがポート40000で期待どおりに動作していることがわかりましたが、何もポート5000で実行されていません。実際にテストするには、IIS Expressポートを5000に変更しても問題なく動作しました。私はIIS ExpressとKestrelの間の競合が予想されていましたが、それは起こりませんでした。

VS 2015はKestrelをまったく使用していますか?

答えて

1

VisualStudioはKestrelを使用します。このトリックは、KestrelをIIS/IISExpressの背後で使用する場合、指定したポートを使用していないことです。むしろ、IISは通信に使用するランダムなポートを選択します。これはKestrelが使用するポートです(このポートはUseIISIntegrationでオーバーライドされています)。直接Kestrelを実行している場合、.UseIISIntegrationはノーオペレーションなので、KestrelはUseUrlsで指定したポートでリッスンします。この結果の1つは、.UseUrls.UseIISIntegrationの順番が重要であるということです。.UseIISIntegrationの後に.UseUrlsを置くと、常にポートを上書きし、IISでアプリケーションを起動できなくなります。 ちょうど起こっていることを見たい場合は、blog postを見てください。私はこの非常に主題について書いています。

関連する問題