---
title: .NET SignalR
slug: cms-11/dev-docs/net-signalr
docTags: 
createdAt: 2026-07-22T19:45:19.315Z
---

Some Optimizely apps, such as [Live Monitor](docId:44XxqaWPIcGWuAIz5TyMa),  use SignalR.

:::hint{type="info"}
**Note**
If you get errors about SignalR not being set up correctly when you start the Episerver user interface in the JavaScript console, clear the .NET temporary files.
:::

Configure SignalR as follows:

1. If you use Visual Studio 2012, install .NET Framework 4.5.1 (or later) and the developer pack.
2. In Visual Studio, do the following steps in a project file such as `Alloy.csproj`:
   a.  Right-click the project and select **Properties**.
   b.  Change *Target framework* to **.NET Framework 4.5.1 or later**.
   c.  Save the project as a solution, for example, `Alloy.sln`.
3. Install the `Microsoft.AspNet.SignalR` package from `NuGet.org`, or go to Visual Studio > **Tools** > **NuGet Package Manager** > **Package Manager Console**, and run the command:

```csharp
Install-Package Microsoft.AspNet.SignalR -Version 2.0.3
```

4. Open `web.config` and add the following lines:

```xml
<configuration>
     ...
       <runtime>
         <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         ...
           <dependentAssembly>
             <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
               <bindingRedirect oldVersion="0.0.0.0-2.0.999.999" newVersion="2.0.1.0" />
           </dependentAssembly>
           <dependentAssembly>
             <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
               <bindingRedirect oldVersion="0.0.0.0-2.0.999.999" newVersion="2.0.1.0" />
           </dependentAssembly>
           <dependentAssembly>
             <assemblyIdentity name="Microsoft.AspNet.SignalR.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
               <bindingRedirect oldVersion="0.0.0.0-2.0.3.0" newVersion="2.0.3.0" />
           </dependentAssembly>
         </assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       </runtime>
     ...
</configuration>
```

The `newVersion` is the real version value of running assemblies on the website. For example, 2.0.1.0 for Microsoft.Owin, 2.0.3.0 for Microsoft.AspNet. SignalR.Core might not be running on your website.

5. Add the following line in `web.config` under `appSettings`:

```xml
<add key="owin:AutomaticAppStartup" value="false" />
```

6. Rebuild the solution and refresh the website. Ensure the website runs as normal.
7. Log in to the website, go to **Add-ons** (applications), and install the [Live Monitor](docId:44XxqaWPIcGWuAIz5TyMa).
8. Restart the website.
9. Open `web.config` again, and change the following line under `appSettings`:

```xml
<add key="owin:AutomaticAppStartup" value="false" />
```

to

```xml
<add key="owin:appStartup" value="EPiServerContentCollaborationOWINStartup" />
```

This example shows the configuration for Content Collaboration. For LiveMonitor, the startup value is `EPiServerLiveMonitorOWINStartup`.

## OWIN startup and optimizeCompilations

:::hint{type="info"}
**Note**
The OWIN startup needs a class. To set up a start-up class, see [OWIN authentication](docId\:V66GCct4OBKVSXMnM2Gl3).
:::

If your project previously did not have an OWIN startup class and `optimizeCompilations` was enabled, but sometimes the new code is not executed, which may result in errors because you did not set up the OWIN functionality. To work around this, temporarily set `optimizeCompilations` in `web.config` to **false** to clear the cache, start the site, and then you can set `optimizeCompilations` to **true** again.
