Adding DotVVM in Existing Web App

DotVVM can be easily combined with other ASP.NET frameworks, like ASP.NET Web Forms, SignalR, ASP.NET Web API or ASP.NET MVC.

DotVVM is yet another OWIN / ASP.NET Core middleware that can be added in the request processing pipeline.

Sample Integration Projects

We have prepared the following sample projects that combine DotVVM with other frameworks in one application:

Installing the Nuget Package (OWIN)

To add DotVVM in an existing ASP.NET project, simply install DotVVM Nuget package using Package Manager Console:

Install-Package DotVVM.Owin

The package will add a reference to DotVVM.Framework and DotVVM.Core libraries to the project.


The next thing you have to do, is to register the DotVVM middleware to the OWIN pipeline. In your OWIN startup class, you have to register the DotVVM middleware.

If you don't have an OWIN startup class in your projects, right click the project in the Solution Explorer window and add a new OWIN Startup Class in the project. It should look like this:

using System.Web.Hosting;
using Microsoft.Owin;
using Owin;
using DotVVM.Framework;
[assembly: OwinStartup(typeof(DotvvmDemo.Startup))]
namespace DotvvmDemo
    public class Startup
        public void Configuration(IAppBuilder app)
            // initialize DotVVM
            var applicationPhysicalPath = HostingEnvironment.ApplicationPhysicalPath;
            var dotvvmConfiguration = app.UseDotVVM<DotvvmStartup>(applicationPhysicalPath);    

Installing the Nuget Package (ASP.NET Core)

If you use the new ASP.NET Core stack, you need the ASP.NET Core version of DotVVM.

To add DotVVM in an existing ASP.NET Core project, simply install DotVVM.AspNetCore Nuget package using Package Manager Console:

Install-Package DotVVM.AspNetCore

The package will reference DotVVM.Framework and DotVVM.Framework.Hosting.AspNetCore libraries in the project.


You have to do two things in the Startup class:

  • Add DotVVM services in the IServiceCollection object.

  • Add the DotVVM middlewares in the ASP.NET Core request pipeline.

First, add the following code snippet in the ConfigureServices method:

services.AddDotVVM(options =>

Second, add the following code snippet in the Configure method. If you are using some authentication middlewares, remember that these should be registered first.

var config = app.UseDotVVM<DotvvmStartup>();

DotvvmStartup class (both OWIN and ASP.NET Core)

Notice that the code references the DotvvmStartup class. It is a class you have to add in your project too. This class contains the configuration of DotVVM itself, e.g. the registration of routes in your app.

using DotVVM.Framework.Compilation.Parser;
using DotVVM.Framework.Configuration;
using DotVVM.Framework.Routing;

namespace DotvvmDemo
    public class DotvvmStartup : IDotvvmStartup
        public void Configure(DotvvmConfiguration config, string applicationPath)
#if !DEBUG
            config.Debug = false;

            // register your routes, controls and resources here

The Debug property is automatically set in ASP.NET Core based on IHostingEnvironment.IsDevelopment(). In OWIN you need to handle that yourself.

Please note that in DotVVM 1.0, the NuGet package name is DotVVM. This package contains the OWIN hosting infrastructure. If you use DotVVM 1.1 or higher, you need to install either DotVVM.Owin or DotVVM.AspNetCore package, depending on the project type you are using. The DotVVM package contains the framework classes only.

On this page