aspnet / RoslynCodeDomProvider

Roslyn CodeDOM provider
MIT License
84 stars 41 forks source link

NullReferenceException After Upgrading Microsoft.CodeDom.Providers.DotNetCompilerPlatform from Version 3.6.0 to 3.11.0 or 4.1.0 #166

Open rubenc57 opened 4 weeks ago

rubenc57 commented 4 weeks ago

After upgrading Microsoft.CodeDom.Providers.DotNetCompilerPlatform from version 3.6.0 to either 3.11.0 or 4.1.0, I encountered the following error message:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform failed to uninstall. Restart Visual Studio to finish process.

Upon restarting Visual Studio and running my website, I received this error: System.NullReferenceException HResult=0x80004003 Message=Object reference not set to an instance of an object. Source=CMS StackTrace: at CMS.Startup.ConfigureAuth(IAppBuilder app) in D:\Mis Proyectos\VS22\websites\jw\CMS\CMS\App_Start\Startup.Auth.cs:line 30

Here is the relevant code from Startup.Auth.cs:

using CMS.Models;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Owin;
using System;
using System.Configuration;

namespace CMS
{
    public partial class Startup {

        // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301883
        public void ConfigureAuth(IAppBuilder app)
        {
            // Configure the db context, user manager and signin manager to use a single instance per request
            app.CreatePerOwinContext(ApplicationDbContext.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

            // Enable the application to use a cookie to store information for the signed-in user
            // and to use a cookie to temporarily store information about a user logging in with a third-party login provider
            // Configure the sign-in cookie
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
                SlidingExpiration = true,  
                ExpireTimeSpan = TimeSpan.FromMinutes(Double.Parse(ConfigurationManager.AppSettings["CookieExpireTimeSpan"].ToString())),
                Provider = new CookieAuthenticationProvider
                {
                    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                        validateInterval: TimeSpan.FromMinutes(Double.Parse(ConfigurationManager.AppSettings["CookieExpireTimeSpan"].ToString())),
                        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });
            // Use a cookie to temporarily store information about a user logging in with a third-party login provider
            app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

            // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process.
            app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));

            // Enables the application to remember the second login verification factor such as phone or email.
            // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from.
            // This is similar to the RememberMe option when you log in.
            app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);

            // Uncomment the following lines to enable logging in with third-party login providers

            switch (ConfigurationManager.AppSettings["OAuthApp"])
            {
                case "local":
                    app.UseFacebookAuthentication(
                       appId: ConfigurationManager.AppSettings["FacebookLocalAppId"].ToString()
                       , appSecret: ConfigurationManager.AppSettings["FacebookLocalAppSecret"].ToString()
                       );
                    break;
                case "beta":
                    app.UseFacebookAuthentication(
                       appId: ConfigurationManager.AppSettings["FacebookBetaAppId"].ToString()
                       , appSecret: ConfigurationManager.AppSettings["FacebookBetaAppSecret"].ToString()
                       );
                    break;

                case "cms":
                default:
                    app.UseFacebookAuthentication(
                        appId: ConfigurationManager.AppSettings["FacebookCmsAppId"].ToString()
                       , appSecret: ConfigurationManager.AppSettings["FacebookCmsAppSecret"].ToString()
                       );
                    break;
            }

        }
    }
}

Even after downgrading the package back to version 3.6.0, the error persists. Previously, the application ran without issues on version 3.6.0 before the upgrade.

To resolve the issue temporarily, I restored a backup of my website, which restored functionality.

Could anyone advise on what might be causing this error and how to resolve it?

Thanks in advance for your help!

Ruben

rubenc57 commented 4 weeks ago

Thank you @MinecraftEarthVillage

When I click on the link I get this:

"Something appears to be missing… The key you provided for file access was invalid. This is usually caused because the file is no longer stored on MediaFire. This occurs when the file is removed by the originating user or MediaFire."

rubenc57 commented 4 weeks ago

What just happend here?