0

编辑:因此,如果我删除引用并右键单击添加引用并将其添加回来。它显示在对象浏览器中并且能够解析命名空间。如果我构建项目或构建解决方案,尽管它从对象浏览器中消失并且错误再次出现。

我正在尝试将 ZenDesk 集成到我们当前的软件中,以帮助技术支持跟踪他们的票证。为此,我需要使用来自 github 的一些简单的 C# 代码来设置 SSO,以生成 JSON Web Token。

该项目位于 Visual Studio 2010 中,代码需要 JWT 才能运行,我从 NuGet 安装。

无论出于何种原因,尽管名称空间不会在代码中解析。

我在这里得到两个错误:

 string token = JWT.JsonWebToken.Encode(payload, SHARED_KEY, JWT.JwtHashAlgorithm.HS256);

它只是说,当前上下文中不存在名称“JWT”。这是一个单一的项目解决方案,所以一切都在一个地方。我也无法在对象浏览器中查看 JWT.dll。即使我尝试使用 using 指令:

using JWT;

还是解决不了。

版本为 JWT 1.3.2 版本。

知道为什么这不能解决吗?

这是完整的代码:

// Handler: <%@ WebHandler Language="C#" Class="Zendesk.JWTLogin" CodeBehind="Zendesk.JWTLogin.cs" %>
// Requires: JWT (https://nuget.org/packages/JWT)
// Tested with .NET 4.5

using System;
using System.Web;
using System.Collections.Generic;

namespace Zendesk
{
    public class JWTLogin : IHttpHandler
    {
        private const string SHARED_KEY = "{some key}";
        private const string SUBDOMAIN = "{some name}";

        public void ProcessRequest(HttpContext context)
        {
            TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
            int timestamp = (int)t.TotalSeconds;

            var payload = new Dictionary<string, object>() {
                { "iat", timestamp },
                { "jti", System.Guid.NewGuid().ToString() },
                //{ "external_id", something that gets user PKey },
                // { "name", currentUser.name },
                // { "email", currentUser.email }
            };

            string token = JWT.JsonWebToken.Encode(payload, SHARED_KEY, JWT.JwtHashAlgorithm.HS256);
            string redirectUrl = "https://" + SUBDOMAIN + ".zendesk.com/access/jwt?jwt=" + token;

            context.Response.Redirect(redirectUrl);
        }

        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
    }
}
4

0 回答 0