Skip to content
DocsTry Aspire
DocsTry

DevTunnelsResourceBuilderExtensions Methods

ClassMethods11 members
Provides extension methods for adding dev tunnels resources to an Hosting.IDistributedApplicationBuilder.
AddDevTunnel(IDistributedApplicationBuilder, string, string?, DevTunnelOptions?)Section titled AddDevTunnel(IDistributedApplicationBuilder, string, string?, DevTunnelOptions?)extensionIResourceBuilder<DevTunnelResource>
Adds a dev tunnel resource to the application model.
public static class DevTunnelsResourceBuilderExtensions
{
public static IResourceBuilder<DevTunnelResource> AddDevTunnel(
this IDistributedApplicationBuilder builder,
string name,
string? tunnelId = null,
DevTunnelOptions? options = null)
{
// ...
}
}
builderIDistributedApplicationBuilder
namestring
tunnelIdstring?optional
optionsDevTunnelOptions?optional
Dev tunnels can be used to expose local endpoints to the public internet via a secure tunnel. By default, the tunnel requires authentication, but anonymous access can be enabled via DevTunnelsResourceBuilderExtensions.WithAnonymousAccess. This overload is not available in polyglot app hosts. Use DevTunnelsResourceBuilderExtensions.AddDevTunnelForPolyglot instead.

The following example shows how to create a dev tunnel resource that exposes all endpoints on a web application project and enable anonymous access:

var builder = DistributedApplication.CreateBuilder(args);
var web = builder.AddProject<Projects.WebApp>("web");
var tunnel = builder.AddDevTunnel("mytunnel")
.WithReference(web)
.WithAnonymousAccess();
builder.Build().Run();
GetEndpoint(IResourceBuilder<DevTunnelResource>, IResourceBuilder<TResource>, string)Section titled GetEndpoint(IResourceBuilder<DevTunnelResource>, IResourceBuilder<TResource>, string)extensionEndpointReference
Gets the tunnel endpoint reference for the specified target resource and endpoint.
public static class DevTunnelsResourceBuilderExtensions
{
public static EndpointReference GetEndpoint<TResource>(
this IResourceBuilder<DevTunnelResource> tunnelBuilder,
IResourceBuilder<TResource> resourceBuilder,
string endpointName)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The dev tunnel resource builder.
resourceBuilderIResourceBuilder<TResource>The target resource builder.
endpointNamestringThe name of the endpoint on the target resource.
EndpointReferenceAn ApplicationModel.EndpointReference representing the public tunnel endpoint.
InvalidOperationExceptionThrown when the specified endpoint is not found in the tunnel.
This method is not available in polyglot app hosts. Use DevTunnelsResourceBuilderExtensions.GetEndpoint instead.
GetEndpoint(IResourceBuilder<DevTunnelResource>, IResource, string)Section titled GetEndpoint(IResourceBuilder<DevTunnelResource>, IResource, string)extensionEndpointReference
Gets the tunnel endpoint reference for the specified target resource and endpoint.
public static class DevTunnelsResourceBuilderExtensions
{
public static EndpointReference GetEndpoint(
this IResourceBuilder<DevTunnelResource> tunnelBuilder,
IResource resource,
string endpointName)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The dev tunnel resource builder.
resourceIResourceThe target resource.
endpointNamestringThe name of the endpoint on the target resource.
EndpointReferenceAn ApplicationModel.EndpointReference representing the public tunnel endpoint.
This method is not available in polyglot app hosts. Use DevTunnelsResourceBuilderExtensions.GetEndpoint instead.
GetEndpoint(IResourceBuilder<DevTunnelResource>, EndpointReference)Section titled GetEndpoint(IResourceBuilder<DevTunnelResource>, EndpointReference)extensionEndpointReference
Gets the tunnel endpoint reference for the specified target endpoint.
public static class DevTunnelsResourceBuilderExtensions
{
public static EndpointReference GetEndpoint(
this IResourceBuilder<DevTunnelResource> tunnelBuilder,
EndpointReference targetEndpointReference)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The dev tunnel resource builder.
targetEndpointReferenceEndpointReferenceThe target endpoint reference.
EndpointReferenceAn ApplicationModel.EndpointReference representing the public tunnel endpoint.
WithAnonymousAccess(IResourceBuilder<DevTunnelResource>)Section titled WithAnonymousAccess(IResourceBuilder<DevTunnelResource>)extensionIResourceBuilder<DevTunnelResource>
Allows the tunnel to be publicly accessed without authentication.
public static class DevTunnelsResourceBuilderExtensions
{
public static IResourceBuilder<DevTunnelResource> WithAnonymousAccess(
this IResourceBuilder<DevTunnelResource> tunnelBuilder)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The resource builder.
IResourceBuilder<DevTunnelResource>The resource builder.
WithReference(IResourceBuilder<DevTunnelResource>, IResourceBuilder<TResource>, bool)Section titled WithReference(IResourceBuilder<DevTunnelResource>, IResourceBuilder<TResource>, bool)extensionIResourceBuilder<DevTunnelResource>
Adds ports on the dev tunnel for all endpoints found on the referenced resource and sets whether anonymous access is allowed.
public static class DevTunnelsResourceBuilderExtensions
{
public static IResourceBuilder<DevTunnelResource> WithReference<TResource>(
this IResourceBuilder<DevTunnelResource> tunnelBuilder,
IResourceBuilder<TResource> resourceBuilder,
bool allowAnonymous)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The resource builder.
resourceBuilderIResourceBuilder<TResource>The resource builder for the referenced resource.
allowAnonymousboolWhether anonymous access is allowed.
IResourceBuilder<DevTunnelResource>The resource builder.
WithReference(IResourceBuilder<DevTunnelResource>, IResourceBuilder<TResource>, DevTunnelPortOptions?)Section titled WithReference(IResourceBuilder<DevTunnelResource>, IResourceBuilder<TResource>, DevTunnelPortOptions?)extensionIResourceBuilder<DevTunnelResource>
Adds ports on the dev tunnel for all endpoints found on the referenced resource.
public static class DevTunnelsResourceBuilderExtensions
{
public static IResourceBuilder<DevTunnelResource> WithReference<TResource>(
this IResourceBuilder<DevTunnelResource> tunnelBuilder,
IResourceBuilder<TResource> resourceBuilder,
DevTunnelPortOptions? portOptions = null)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The resource builder.
resourceBuilderIResourceBuilder<TResource>The resource builder for the referenced resource.
portOptionsDevTunnelPortOptions?optionalOptions for the dev tunnel ports.
IResourceBuilder<DevTunnelResource>The resource builder.
This overload is not available in polyglot app hosts. Use the overload that accepts a bool allowAnonymous parameter instead. To expose only specific endpoints on the referenced resource, use DevTunnelsResourceBuilderExtensions.WithReference.
WithReference(IResourceBuilder<DevTunnelResource>, EndpointReference)Section titled WithReference(IResourceBuilder<DevTunnelResource>, EndpointReference)extensionIResourceBuilder<DevTunnelResource>
Exposes the specified endpoint via the dev tunnel.
public static class DevTunnelsResourceBuilderExtensions
{
public static IResourceBuilder<DevTunnelResource> WithReference(
this IResourceBuilder<DevTunnelResource> tunnelBuilder,
EndpointReference targetEndpoint)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The resource builder.
targetEndpointEndpointReferenceThe endpoint to expose via the dev tunnel.
IResourceBuilder<DevTunnelResource>The resource builder.
WithReference(IResourceBuilder<DevTunnelResource>, EndpointReference, bool)Section titled WithReference(IResourceBuilder<DevTunnelResource>, EndpointReference, bool)extensionIResourceBuilder<DevTunnelResource>
Exposes the specified endpoint via the dev tunnel and sets whether anonymous access is allowed.
public static class DevTunnelsResourceBuilderExtensions
{
public static IResourceBuilder<DevTunnelResource> WithReference(
this IResourceBuilder<DevTunnelResource> tunnelBuilder,
EndpointReference targetEndpoint,
bool allowAnonymous)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The resource builder.
targetEndpointEndpointReferenceThe endpoint to expose via the dev tunnel.
allowAnonymousboolWhether anonymous access is allowed.
IResourceBuilder<DevTunnelResource>The resource builder.
WithReference(IResourceBuilder<DevTunnelResource>, EndpointReference, DevTunnelPortOptions?)Section titled WithReference(IResourceBuilder<DevTunnelResource>, EndpointReference, DevTunnelPortOptions?)extensionIResourceBuilder<DevTunnelResource>
Exposes the specified endpoint via the dev tunnel.
public static class DevTunnelsResourceBuilderExtensions
{
public static IResourceBuilder<DevTunnelResource> WithReference(
this IResourceBuilder<DevTunnelResource> tunnelBuilder,
EndpointReference targetEndpoint,
DevTunnelPortOptions? portOptions)
{
// ...
}
}
tunnelBuilderIResourceBuilder<DevTunnelResource>The resource builder.
targetEndpointEndpointReferenceThe endpoint to expose via the dev tunnel.
portOptionsDevTunnelPortOptions?Options for the dev tunnel port.
IResourceBuilder<DevTunnelResource>The resource builder.
This overload is not available in polyglot app hosts. Use DevTunnelsResourceBuilderExtensions.WithReference or DevTunnelsResourceBuilderExtensions.WithReference instead.
WithReference(IResourceBuilder<TResource>, IResourceBuilder<IResourceWithEndpoints>, IResourceBuilder<DevTunnelResource>)Section titled WithReference(IResourceBuilder<TResource>, IResourceBuilder<IResourceWithEndpoints>, IResourceBuilder<DevTunnelResource>)extensionIResourceBuilder<TResource>
Injects service discovery and endpoint information as environment variables from the dev tunnel resource into the destination resource, using the tunneled resource's name as the service name. Each endpoint defined on the target resource will be injected using the format defined by the ApplicationModel.ReferenceEnvironmentInjectionAnnotation on the destination resource, i.e. either "services__{sourceResourceName}__{endpointScheme}__{endpointIndex}={uriString}" for .NET service discovery, or "{RESOURCE_ENDPOINT}={uri}" for endpoint injection.
public static class DevTunnelsResourceBuilderExtensions
{
public static IResourceBuilder<TResource> WithReference<TResource>(
this IResourceBuilder<TResource> builder,
IResourceBuilder<IResourceWithEndpoints> targetResource,
IResourceBuilder<DevTunnelResource> tunnelResource)
{
// ...
}
}
builderIResourceBuilder<TResource>The builder.
targetResourceIResourceBuilder<IResourceWithEndpoints>The resource to inject service discovery information for.
tunnelResourceIResourceBuilder<DevTunnelResource>The dev tunnel resource to resolve the tunnel address from.
IResourceBuilder<TResource>The builder.
Referencing a dev tunnel will delay the start of the resource until the referenced dev tunnel's endpoint is allocated. This method is not available in polyglot app hosts.