2016-10-16 5 views
2

私は2つのWebアプリケーションプロジェクトを持っていて、どちらもTFSソース管理に含まれています。最初のプロジェクトでは、AntiForgeryトークンで問題は発生しません。偽装トークンの問題は解決されましたが、プロジェクトに影響がありました。

これは、「System.InvalidOperationException」種類の例外がSystem.Web.WebPages.dllで発生したエラー

であったが、ユーザーコードで処理されなかった

追加情報:タイプのクレーム 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier 'または' http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider 'が提示されたClaimsIdentityに存在しませんでした。クレームベースの認証で偽造防止トークンを有効にするには、設定されたクレームプロバイダが、生成したクレームアイデンティティインスタンスにこれらのクレームを両方提供していることを確認してください。設定されたクレームプロバイダが代わりにユニークな識別子として別のクレームタイプを使用する場合は、静的プロパティAntiForgeryConfig.UniqueClaimTypeIdentifierを設定することで設定できます。

、見つかったソリューションは、そのエラーを投げままプロジェクトのGlobal.asax.csファイルに

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimsIdentity.DefaultNameClaimType; 

それを追加することでしたので、私はやったし、それが問題を修正しました。

しかし、これは奇妙な部分が入る場所です...私が "固定"アプリケーションを実行すると、私は他のWebアプリケーションからユーザーとしてログインしています。

私は他のアプリケーションを実行することに決めました。私はまだログインしていたので、ログアウトしてデバッグを停止しました。その後、 "固定"プロジェクトに入って、

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimsIdentity.DefaultNameClaimType; 

となり、プロジェクトは正しく実行されました。

他のアプリケーションからログアウトしないと、このエラーがスローされます。

私はこれがどういうことなのか、これがどうして起こっているのか、全く考えていません。

+0

@DavidG、はい。そして、今私は今でもプロジェクトを公開することができません – Chris

+0

@DavidG、どこでそれをやっていくのですか? Btw、説明のおかげで – Chris

+0

@DavidG、ありがとう。私はいくつかの検索をして、それは単純だった: CookieName = "WhateverICallIt"; Startup.Auth.csの – Chris

答えて

0

クッキーがlocalhostに対して保存されているため、エラーが発生します。これは、実行しているすべてのアプリケーションがそれを使用しようとすることを意味します。これを修正するには、あなたのアプリが使い分けるクッキーの名前を作る必要があります。これはCookieNameプロパティで行われます。 App_Startフォルダで、Startup.Auth.csファイルを編集します(別のテンプレートを持っている場合、それは別の名前にすることもでき)とクッキー名を設定するための行を追加します:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/Account/Login"), 
    //snip 
    CookieName = "NameOfYourAppForExample" 
}); 
関連する問題