編集:したがって、参照を削除して右クリックして参照を追加し、再度追加すると、オブジェクトブラウザに表示され、名前空間を解決できます。プロジェクトをビルドするか、ソリューションをビルドすると、オブジェクト ブラウザーから消えてエラーが再び表示されます。
ZenDesk を現在のソフトウェアに統合して、テクニカル サポートがチケットを追跡できるようにしようとしています。これを行うには、github の単純な C# コードを使用して SSO をセットアップし、JSON Web トークンを生成する必要があります。
プロジェクトは Visual Studio 2010 にあり、コードを実行するには NuGet からインストールした JWT が必要です。
なんらかの理由で、名前空間はコードで解決されません。
ここで 2 つのエラーが発生します。
string token = JWT.JsonWebToken.Encode(payload, SHARED_KEY, JWT.JwtHashAlgorithm.HS256);
「名前「JWT」は現在のコンテキストには存在しません。これは 1 つのプロジェクト ソリューションであるため、すべてが 1 か所にあります。また、オブジェクト ブラウザで 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;
}
}
}
}