Asp net core 3 1 unable to unprotect the message state running in debugger


ASP.NET is a popular programming language used for building web . It provides a framework for developing dynamic websites, web services, and web APIs. One common issue that developers may encounter while working with ASP.NET Core 3.1 is the inability to unprotect the message when running in the .


When running an ASP.NET Core 3.1 application in the debugger, you may come across an error message stating that the message state cannot be unprotected. This error occurs because the debugger is unable to decrypt the message state, which is necessary for the application to function properly.

The Solution

To solve this issue, you can modify the configuration of your ASP.NET Core 3.1 application to allow the debugger to unprotect the message state. This can be done by adding a few of code to the Startup.cs file.

public void ConfigureServices(IServiceCollection services)
    // Add the necessary services

    // Configure the data protection options
        .PersistKeysToFileSystem(new DirectoryInfo(@"C:Keys"));

    // Add other services as needed

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    // Configure the necessary middleware

    // Add other middleware as needed

In the code snippet above, we first configure the necessary services by calling the AddControllersWithViews() method. Then, we configure the data protection options by calling the AddDataProtection() method. We set the application name to a custom value and specify a directory where the encryption keys will be persisted.

Next, in the Configure() method, we add the UseDeveloperExceptionPage() middleware to enable error messages during development. This will help us identify any issues related to message state protection.


Let's consider an example where we have an ASP.NET Core 3.1 application that uses message state protection. We want to run this application in the debugger without encountering the “unable to unprotect the message state” error.

public class HomeController : Controller
    public IActionResult Index()
        // Perform some operations

        return View();

In the above example, we have a simple HomeController class with an Index() method. This method performs some operations and returns a view. However, when running this application in the debugger, we may encounter the error mentioned earlier.

To solve this issue, we can follow the steps mentioned in the solution section. By adding the necessary code to the Startup.cs file, we can allow the debugger to unprotect the message state.


The inability to unprotect the message state when running an ASP.NET Core 3.1 application in the debugger can be a frustrating issue for developers. However, by the data protection options and adding the necessary middleware, we can overcome this problem and run our application smoothly in the debugger.

to always test your application thoroughly after making any to ensure that it functions as expected. Happy !

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents