Browse Source

Change how ports work for local ASP.NET Core apps

Instead of using the ports in launchSettings.json we'll now just ignore them.

This means that ports get auto-assigned when they are not specified in
tye.yaml. This avoid the conflict when multiple default asp.net core applications
are used - so as a result, tye.yaml isn't needed in as many situations.
pull/101/head
Ryan Nowak 6 years ago
parent
commit
f39b4596f3
  1. 1
      src/Tye.Hosting/Model/ServiceBinding.cs
  2. 14
      src/Tye.Hosting/ProxyService.cs
  3. 1
      src/tye/ConfigModel/ConfigApplication.cs
  4. 5
      src/tye/ConfigModel/ConfigFactory.cs
  5. 1
      src/tye/ConfigModel/ConfigServiceBinding.cs

1
src/Tye.Hosting/Model/ServiceBinding.cs

@ -8,6 +8,7 @@ namespace Tye.Hosting.Model
{
public string? Name { get; set; }
public string? ConnectionString { get; set; }
public bool AutoAssignPort { get; set; }
public int? Port { get; set; }
public int? InternalPort { get; set; }
public string? Host { get; set; }

14
src/Tye.Hosting/ProxyService.cs

@ -59,11 +59,16 @@ namespace Tye.Hosting
foreach (var binding in service.Description.Bindings)
{
if (binding.Port == null)
if (binding.Port == null && !binding.AutoAssignPort)
{
continue;
}
if (binding.Port == null)
{
binding.Port = GetNextPort();
}
if (service.Description.Replicas == 1)
{
// No need to proxy
@ -80,7 +85,12 @@ namespace Tye.Hosting
ports.Add(port);
}
_logger.LogInformation("Mapping external port {ExternalPort} to internal port(s) {InternalPorts} for {ServiceName}", binding.Port, string.Join(", ", ports.Select(p => p.ToString())), service.Description.Name);
_logger.LogInformation(
"Mapping external port {ExternalPort} to internal port(s) {InternalPorts} for {ServiceName} binding {BindingName}",
binding.Port,
string.Join(", ", ports.Select(p => p.ToString())),
service.Description.Name,
binding.Name ?? binding.Protocol);
service.PortMap[binding.Port.Value] = ports;

1
src/tye/ConfigModel/ConfigApplication.cs

@ -60,6 +60,7 @@ namespace Tye.ConfigModel
{
ConnectionString = binding.ConnectionString,
Host = binding.Host,
AutoAssignPort = binding.AutoAssignPort,
InternalPort = binding.InternalPort,
Name = binding.Name,
Port = binding.Port,

5
src/tye/ConfigModel/ConfigFactory.cs

@ -157,7 +157,10 @@ namespace Tye.ConfigModel
var uri = new Uri(address);
service.Bindings.Add(new ConfigServiceBinding()
{
Port = uri.Port,
// Don't use ports from launch profiles. These are very likely to be the same defaults (5000, 5001)
// that were generated when the project was created, and so they will almost always conflict
// between multiple apps.
AutoAssignPort = true,
Protocol = uri.Scheme
});
}

1
src/tye/ConfigModel/ConfigServiceBinding.cs

@ -8,6 +8,7 @@ namespace Tye.ConfigModel
{
public string? Name { get; set; }
public string? ConnectionString { get; set; }
public bool AutoAssignPort { get; set; }
public int? Port { get; set; }
public int? InternalPort { get; set; }
public string? Host { get; set; }

Loading…
Cancel
Save