# AzureAppServiceEnvironmentExtensions Methods

- Package: [Aspire.Hosting.Azure.AppService](/reference/api/csharp/aspire.hosting.azure.appservice.md)
- Type: [AzureAppServiceEnvironmentExtensions](/reference/api/csharp/aspire.hosting.azure.appservice/azureappserviceenvironmentextensions.md)
- Kind: `Methods`
- Members: `10`

Extensions for adding Azure App Service Environment resources to a distributed application builder.

## AddAzureAppServiceEnvironment(IDistributedApplicationBuilder, string)

- Name: `AddAzureAppServiceEnvironment(IDistributedApplicationBuilder, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs#L88-L300)

Adds a azure app service environment resource to the distributed application builder.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> AddAzureAppServiceEnvironment(
        this IDistributedApplicationBuilder builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The distributed application builder.
- `name` (`string`)
  The name of the resource.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- `ApplicationModel.IResourceBuilder`1`

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithAcrPullIdentity(IResourceBuilder<AzureAppServiceEnvironmentResource>, IResourceBuilder<AzureUserAssignedIdentityResource>)

- Name: `WithAcrPullIdentity(IResourceBuilder<AzureAppServiceEnvironmentResource>, IResourceBuilder<AzureUserAssignedIdentityResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs#L534-L539)

Configures the Azure App Service environment to use the supplied `Azure.AzureUserAssignedIdentityResource` as the managed identity that App Service apps use to pull images from the configured container registry (the `AcrPull` identity), instead of having Aspire create a new identity and a new `AcrPull` role assignment.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithAcrPullIdentity(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder,
        IResourceBuilder<AzureUserAssignedIdentityResource> identityBuilder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The Azure App Service environment to configure.
- `identityBuilder` (`IResourceBuilder<AzureUserAssignedIdentityResource>`)
  The resource builder for the user-assigned identity that should be used for image pulls. The supplied identity must already have the `AcrPull` role on the configured container registry.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- The `ApplicationModel.IResourceBuilder`1` for chaining.

## Exceptions

- `ArgumentNullException` -- Thrown when `builder` or `identityBuilder` is `null`.

## Remarks

When this is set, Aspire will not create a new identity or an `AcrPull` role assignment for the container registry. The caller is responsible for ensuring the supplied identity already has the required `AcrPull` role assignment on the registry, for example by chaining `.WithRoleAssignments(acr, ContainerRegistryBuiltInRole.AcrPull)` when adding the identity.

Unlike the equivalent method on Azure Container Apps, App Service reuses this single identity for more than just image pulls. The same identity is also attached to every generated App Service web app as a user-assigned managed identity, and is used by the Aspire OTLP sidecar to authenticate telemetry to the Aspire dashboard (it is added to the dashboard's `ALLOWED_MANAGED_IDENTITIES` and exposed to each app via the OTEL client-id app setting). If you supply an existing identity here, it will take on all of these roles.

This is commonly combined with `AsExisting` on the App Service environment (App Service Plan) and on the container registry to deploy websites into a pre-provisioned set of Azure resources without Aspire emitting any new ACR-pull identity or ACR-pull role-assignment resources. See [https://github.com/microsoft/aspire/issues/14382](https://github.com/microsoft/aspire/issues/14382) for the scenario this addresses.

Only the combination of an existing App Service Plan, an existing container registry, and this method avoids emitting any new identity or role-assignment resources in the env module. Other combinations still work but will emit additional resources:

- If the App Service Plan is marked `AsExisting` but no identity is supplied here, Aspire still emits a new `UserAssignedIdentity` and an `AcrPull` role assignment on the configured registry.
- If this method is used but the container registry is not existing (either the Aspire-generated default registry or a user-added registry without `AsExisting`), the registry itself is still provisioned. To wire the supplied identity to that newly-created registry, chain `.WithRoleAssignments(acr, ContainerRegistryBuiltInRole.AcrPull)` on the identity.

If the Aspire dashboard is enabled, Aspire still provisions the dashboard website and its contributor identity. Use [AzureAppServiceEnvironmentExtensions.WithDashboard(IResourceBuilder<AzureAppServiceEnvironmentResource>, bool)](/reference/api/csharp/aspire.hosting.azure.appservice/azureappserviceenvironmentextensions/methods.md#withdashboard-iresourcebuilder-azureappserviceenvironmentresource-bool) with `false` when targeting a fully pre-provisioned App Service Plan that should not receive a dashboard.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithAzureApplicationInsights(IResourceBuilder<AzureAppServiceEnvironmentResource>)

- Name: `WithAzureApplicationInsights(IResourceBuilder<AzureAppServiceEnvironmentResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs#L352-L354)

Configures whether Azure Application Insights should be enabled for the Azure App Service.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithAzureApplicationInsights(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The AzureAppServiceEnvironmentResource to configure.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- `ApplicationModel.IResourceBuilder`1`

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithAzureApplicationInsights(IResourceBuilder<AzureAppServiceEnvironmentResource>, string)

- Name: `WithAzureApplicationInsights(IResourceBuilder<AzureAppServiceEnvironmentResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs)

Configures whether Azure Application Insights should be enabled for the Azure App Service.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithAzureApplicationInsights(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder,
        string applicationInsightsLocation)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The AzureAppServiceEnvironmentResource to configure.
- `applicationInsightsLocation` (`string`)
  The location for Application Insights.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- `ApplicationModel.IResourceBuilder`1`

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithAzureApplicationInsights(IResourceBuilder<AzureAppServiceEnvironmentResource>, IResourceBuilder<ParameterResource>)

- Name: `WithAzureApplicationInsights(IResourceBuilder<AzureAppServiceEnvironmentResource>, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs)

Configures whether Azure Application Insights should be enabled for the Azure App Service.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithAzureApplicationInsights(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder,
        IResourceBuilder<ParameterResource> applicationInsightsLocation)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The AzureAppServiceEnvironmentResource to configure.
- `applicationInsightsLocation` (`IResourceBuilder<ParameterResource>`)
  The location parameter for Application Insights.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- `ApplicationModel.IResourceBuilder`1`

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithAzureApplicationInsights(IResourceBuilder<AzureAppServiceEnvironmentResource>, IResourceBuilder<AzureApplicationInsightsResource>)

- Name: `WithAzureApplicationInsights(IResourceBuilder<AzureAppServiceEnvironmentResource>, IResourceBuilder<AzureApplicationInsightsResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs#L416-L418)

Configures whether Azure Application Insights should be enabled for the Azure App Service.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithAzureApplicationInsights(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder,
        IResourceBuilder<AzureApplicationInsightsResource> applicationInsightsBuilder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The AzureAppServiceEnvironmentResource builder to configure.
- `applicationInsightsBuilder` (`IResourceBuilder<AzureApplicationInsightsResource>`)
  The Application Insights resource builder.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- `ApplicationModel.IResourceBuilder`1`

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithDashboard(IResourceBuilder<AzureAppServiceEnvironmentResource>, bool)

- Name: `WithDashboard(IResourceBuilder<AzureAppServiceEnvironmentResource>, bool)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs#L340-L341)

Configures whether the Aspire dashboard should be included in the Azure App Service environment.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithDashboard(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder,
        bool enable = true)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The `ApplicationModel.IResourceBuilder`1` to configure.
- `enable` (`bool`) `optional`
  Whether to include the Aspire dashboard. Default is true.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining additional configuration.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithDeploymentSlot(IResourceBuilder<AzureAppServiceEnvironmentResource>, IResourceBuilder<ParameterResource>)

- Name: `WithDeploymentSlot(IResourceBuilder<AzureAppServiceEnvironmentResource>, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs)

Configures the slot to which the Azure App Services should be deployed.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithDeploymentSlot(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder,
        IResourceBuilder<ParameterResource> deploymentSlot)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The AzureAppServiceEnvironmentResource to configure.
- `deploymentSlot` (`IResourceBuilder<ParameterResource>`)
  The deployment slot parameter for all App Services in the App Service Environment.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- `ApplicationModel.IResourceBuilder`1`

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithDeploymentSlot(IResourceBuilder<AzureAppServiceEnvironmentResource>, string)

- Name: `WithDeploymentSlot(IResourceBuilder<AzureAppServiceEnvironmentResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs)

Configures the slot to which the Azure App Services should be deployed.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithDeploymentSlot(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder,
        string deploymentSlot)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The AzureAppServiceEnvironmentResource to configure.
- `deploymentSlot` (`string`)
  The deployment slot for all App Services in the App Service Environment.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- `ApplicationModel.IResourceBuilder`1`

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithHttpsUpgrade(IResourceBuilder<AzureAppServiceEnvironmentResource>, bool)

- Name: `WithHttpsUpgrade(IResourceBuilder<AzureAppServiceEnvironmentResource>, bool)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureAppServiceEnvironmentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs#L326-L327)

Configures whether HTTP endpoints should be automatically upgraded to HTTPS for the Azure App Service environment. By default, HTTP endpoints are upgraded to HTTPS for security and WebSocket compatibility.

```csharp
public static class AzureAppServiceEnvironmentExtensions
{
    public static IResourceBuilder<AzureAppServiceEnvironmentResource> WithHttpsUpgrade(
        this IResourceBuilder<AzureAppServiceEnvironmentResource> builder,
        bool upgrade = true)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureAppServiceEnvironmentResource>`)
  The `ApplicationModel.IResourceBuilder`1` to configure.
- `upgrade` (`bool`) `optional`
  Whether to upgrade HTTP endpoints to HTTPS. Default is true.

## Returns

`IResourceBuilder<AzureAppServiceEnvironmentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` for chaining additional configuration.

## Remarks

When disabled ( `false`), HTTP endpoints will use HTTP scheme and port 80 in Azure App Service. Note that Azure App Service forces HTTP to HTTPS redirects at the platform level, so disabling upgrade primarily affects connection strings generated for dependent resources.

## Examples

Preserve HTTP endpoints instead of automatically upgrading them to HTTPS:

```csharp
var appService = builder.AddAzureAppServiceEnvironment("appservice")
    .WithHttpsUpgrade(false);
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
