“SetBeforeAccess”TokenCache没有定义

时间:2017-08-02 03:13:10

标签: azure-active-directory adal

我直接复制了GitHub示例代码,无法摆脱这些错误。

Error   CS1061  'TokenCache' does not contain a definition for 'SetBeforeAccess'

我在using语句中包含了Microsoft.Identity.Client。

using System.IO;
using System.Security.Cryptography;
using Microsoft.Identity.Client;

namespace TokenCache1
{
    static class TokenCacheHelper
    {

    public static TokenCache GetUserCache()
    {
        if (usertokenCache == null)
        {
            usertokenCache = new TokenCache();
            usertokenCache.SetBeforeAccess(BeforeAccessNotification);
            usertokenCache.SetAfterAccess(AfterAccessNotification);
        }
        return usertokenCache;
    }

    static TokenCache usertokenCache;

    /// <summary>
    /// Path to the token cache
    /// </summary>
    public static string CacheFilePath = System.Reflection.Assembly.GetExecutingAssembly().Location + "msalcache.txt";

    private static readonly object FileLock = new object();

    public static void BeforeAccessNotification(TokenCacheNotificationArgs args)
    {
        lock (FileLock)
        {
            args.TokenCache.Deserialize(File.Exists(CacheFilePath)
                ? File.ReadAllBytes(CacheFilePath)
                : null);
        }
    }

我正在使用.NET4.5和UWP应用程序。

2 个答案:

答案 0 :(得分:0)

这可能是由于缺少MSAL library导致的。可以从Visual Studio本身上的NuGet安装。

在Visual Studio上,选择“工具”菜单,选择“ NuGet程序包管理器”,然后选择“程序包管理器控制台”,然后键入以下命令:

Install-Package Microsoft.Identity.Client -Pre

答案 1 :(得分:0)

我遇到了同样的问题:

从packages \ Microsoft.Identity.Client.1.1.3-preview0012 \ Microsoft.Identity.Client.dll添加引用时,无法访问TokenCacheExtensions类

但是当我添加来自的引用

packages\Microsoft.Identity.Client.1.1.3-preview0012\lib\net45\Microsoft.Identity.Client.dll 

然后我可以访问TokenCacheExtension类。