Visual Studio 2013を使用してMVCアプリケーションを作成し、Azure AD Tenantに問題なく接続しました。今朝突然、エラーが発生します:Visual Studioを使用したAzure AD PRIMARY KEY制約の違反
PRIMARY KEY制約 'PK_dbo.Tenants'に違反しています。オブジェクト 'dbo.Tenants'に重複キーを挿入できません。重複するキー値は(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX)です。 ステートメントが終了しました。
テナントキーは、私たちの組織のテナントIDです。
このアプリケーションは、今朝まで問題なしで1ヶ月以上開発されています。
エラーは、アプリケーションが作成されたときに生成されたこの機能で発生します。
public static void RefreshKeys(string metadataLocation)
{
IssuingAuthority issuingAuthority = ValidatingIssuerNameRegistry.GetIssuingAuthority(metadataLocation);
bool newKeys = false;
foreach (string thumbprint in issuingAuthority.Thumbprints)
{
if (!ContainsKey(thumbprint))
{
newKeys = true;
break;
}
}
if (newKeys)
{
using (TenantDbContext context = new TenantDbContext())
{
context.IssuingAuthorityKeys.RemoveRange(context.IssuingAuthorityKeys);
foreach (string thumbprint in issuingAuthority.Thumbprints)
{
context.IssuingAuthorityKeys.Add(new IssuingAuthorityKey { Id = thumbprint });
}
foreach (string issuer in issuingAuthority.Issuers)
{
context.Tenants.Add(new Tenant { Id = issuer.TrimEnd('/').Split('/').Last() });
}
context.SaveChanges();
}
}
}
はありがとうございます。それは問題を解決するように見えました。それがなぜランダムに起こったのだろうか? –
@KevinKullaコードは、テナントIDが常に一意であり、常にテナント表に挿入を実行したので、再使用されないと想定していました。これはそうではないようです - おそらくテナントIDがある上限を覆い、現在再利用されていますか? –