2016-10-16 3 views
2

두 웹 응용 프로그램 프로젝트가 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에 없습니다. 클레임 기반 인증을 사용하여 위조 방지 토큰 지원을 활성화하려면 구성된 클레임 공급자가 생성하는 ClaimsIdentity 인스턴스에 이러한 클레임을 모두 제공하는지 확인하십시오. 구성된 클레임 공급자가 고유 한 식별자로 다른 클레임 유형을 대신 사용하는 경우 정적 속성 AntiForgeryConfig.UniqueClaimTypeIdentifier를 설정하여 구성 할 수 있습니다.

및 발견 된 솔루션은

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimsIdentity.DefaultNameClaimType; 

를 추가하는 것이라고 그 오류를 던지는 유지 프로젝트의 Global.asax.cs 파일, 그래서 나는했고,이 문제를 해결했습니다.

하지만 여기가 이상한 부분입니다 ... "고정"응용 프로그램을 실행하면 다른 웹 응용 프로그램에서 사용자로 로그인합니다.

그래서 다른 응용 프로그램을 실행하기로 결정했는데 여전히 로그인되어 있으므로 로그 아웃하고 디버깅을 중단했습니다. 그런 다음 "고정"프로젝트에 들어가서

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" 
});