0
votes

I have this class, slightly tweaked from a Microsoft sample:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.

using Root.Web.TokenStorage;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.OpenIdConnect;
using System.Security.Claims;
using System.Web;
using System.Web.Mvc;

namespace Root.Web.Controllers
{
    public class AccountController : Controller
    {
        public void SignIn()
        {
            if (!Request.IsAuthenticated)
            {
                // Signal OWIN to send an authorization request to Azure
                Request.GetOwinContext().Authentication.Challenge(
                    new AuthenticationProperties { RedirectUri = "/" },
                    OpenIdConnectAuthenticationDefaults.AuthenticationType);
            }
        }

        public ActionResult SignOut()
        {
            if (Request.IsAuthenticated)
            {
                var tokenStore = new SessionTokenStore(null,
                    System.Web.HttpContext.Current, ClaimsPrincipal.Current);

                tokenStore.Clear();

                Request.GetOwinContext().Authentication.SignOut(
                    CookieAuthenticationDefaults.AuthenticationType);
            }

            return RedirectToAction("Index", "Home");
        }
    }
}

And on the line where I get the OWIN context, I get this error:

Error CS0012 The type 'IOwinContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

But I already have a newer version of Microsoft.Owin installed from NuGet; why can't I use that? I can't downgrade to 2.0.0.0 due to dependencies of other NuGet packages.

How can I tell Visual Studio that I want to use the newer version of Microsoft.Owin?

1

1 Answers

1
votes

I think I figured it out - I had previously reverted changes to my csproj file, and so the Microsoft.Owin package was stuck in limbo, installed according to NuGet but not installed according to my csproj file. I had to switch to an older version to force it to be installed, then switch back.