# AzureSignalRExtensions Methods

- Package: [Aspire.Hosting.Azure.SignalR](/reference/api/csharp/aspire.hosting.azure.signalr.md)
- Type: [AzureSignalRExtensions](/reference/api/csharp/aspire.hosting.azure.signalr/azuresignalrextensions.md)
- Kind: `Methods`
- Members: `4`

Provides extension methods for adding the Azure SignalR resources to the application model.

## AddAzureSignalR(IDistributedApplicationBuilder, string)

- Name: `AddAzureSignalR(IDistributedApplicationBuilder, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureSignalRResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.SignalR/AzureSignalRExtensions.cs#L36)

Adds an Azure SignalR resource to the application model.

```csharp
public static class AzureSignalRExtensions
{
    public static IResourceBuilder<AzureSignalRResource> AddAzureSignalR(
        this IDistributedApplicationBuilder builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The `Hosting.IDistributedApplicationBuilder`.
- `name` (`string`)
  The name of the resource. This name will be used as the connection string name when referenced in a dependency.

## Returns

`IResourceBuilder<AzureSignalRResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

By default references to the Azure SignalR resource will be assigned the following roles: - `SignalRBuiltInRole.SignalRAppServer` These can be replaced by calling [AzureSignalRExtensions.WithRoleAssignments(IResourceBuilder<T>, IResourceBuilder<AzureSignalRResource>, SignalRBuiltInRole[])](/reference/api/csharp/aspire.hosting.azure.signalr/azuresignalrextensions/methods.md#withroleassignments-iresourcebuilder-t-iresourcebuilder-azuresignalrresource-signalrbuiltinrole).

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddAzureSignalR(IDistributedApplicationBuilder, string, AzureSignalRServiceMode)

- Name: `AddAzureSignalR(IDistributedApplicationBuilder, string, AzureSignalRServiceMode)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureSignalRResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.SignalR/AzureSignalRExtensions.cs#L59-L127)

Adds an Azure SignalR resource to the application model.

```csharp
public static class AzureSignalRExtensions
{
    public static IResourceBuilder<AzureSignalRResource> AddAzureSignalR(
        this IDistributedApplicationBuilder builder,
        string name,
        AzureSignalRServiceMode serviceMode)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The `Hosting.IDistributedApplicationBuilder`.
- `name` (`string`)
  The name of the resource. This name will be used as the connection string name when referenced in a dependency.
- `serviceMode` ([AzureSignalRServiceMode](/reference/api/csharp/aspire.hosting.azure.signalr/azuresignalrservicemode.md))
  The service mode of the resource.

## Returns

`IResourceBuilder<AzureSignalRResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

By default references to the Azure SignalR resource will be assigned the following roles: - `SignalRBuiltInRole.SignalRAppServer` Using [AzureSignalRServiceMode.Serverless](/reference/api/csharp/aspire.hosting.azure.signalr/azuresignalrservicemode/fields.md) additionally adds: - `SignalRBuiltInRole.SignalRRestApiOwner` These can be replaced by calling [AzureSignalRExtensions.WithRoleAssignments(IResourceBuilder<T>, IResourceBuilder<AzureSignalRResource>, SignalRBuiltInRole[])](/reference/api/csharp/aspire.hosting.azure.signalr/azuresignalrextensions/methods.md#withroleassignments-iresourcebuilder-t-iresourcebuilder-azuresignalrresource-signalrbuiltinrole).

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## RunAsEmulator(IResourceBuilder<AzureSignalRResource>, Action<IResourceBuilder<AzureSignalREmulatorResource>>)

- Name: `RunAsEmulator(IResourceBuilder<AzureSignalRResource>, Action<IResourceBuilder<AzureSignalREmulatorResource>>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureSignalRResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.SignalR/AzureSignalRExtensions.cs#L151-L175)

Configures an Azure SignalR resource to be emulated. This resource requires an [AzureSignalRResource](/reference/api/csharp/aspire.hosting.azure.signalr/azuresignalrresource.md) to be added to the application model. Please note that the resource will be emulated in Serverless mode.

```csharp
public static class AzureSignalRExtensions
{
    public static IResourceBuilder<AzureSignalRResource> RunAsEmulator(
        this IResourceBuilder<AzureSignalRResource> builder,
        Action<IResourceBuilder<AzureSignalREmulatorResource>>? configureContainer = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureSignalRResource>`)
  The Azure SignalR resource builder.
- `configureContainer` (`Action<IResourceBuilder<AzureSignalREmulatorResource>>`) `optional`
  Callback that exposes underlying container used for emulation to allow for customization.

## Returns

`IResourceBuilder<AzureSignalRResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

This version of the package defaults to the tag of the / container image.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithRoleAssignments(IResourceBuilder<T>, IResourceBuilder<AzureSignalRResource>, SignalRBuiltInRole[])

- Name: `WithRoleAssignments(IResourceBuilder<T>, IResourceBuilder<AzureSignalRResource>, SignalRBuiltInRole[])`
- Modifiers: `extension`
- Returns: `IResourceBuilder<T>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.SignalR/AzureSignalRExtensions.cs)

Assigns the specified roles to the given resource, granting it the necessary permissions on the target Azure SignalR resource. This replaces the default role assignments for the resource.

```csharp
public static class AzureSignalRExtensions
{
    public static IResourceBuilder<T> WithRoleAssignments<T>(
        this IResourceBuilder<T> builder,
        IResourceBuilder<AzureSignalRResource> target,
        params SignalRBuiltInRole[] roles)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<T>`)
  The resource to which the specified roles will be assigned.
- `target` (`IResourceBuilder<AzureSignalRResource>`)
  The target Azure SignalR resource.
- `roles` (`SignalRBuiltInRole[]`)
  The built-in SignalR roles to be assigned.

## Returns

`IResourceBuilder<T>` -- The updated `ApplicationModel.IResourceBuilder`1` with the applied role assignments.

## Remarks

Assigns the SignalRContributor role to the 'Projects.Api' project.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var signalr = builder.AddAzureSignalR("signalr");

var api = builder.AddProject<Projects.Api>("api")
  .WithRoleAssignments(signalr, SignalRBuiltInRole.SignalRContributor)
  .WithReference(signalr);
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.
