https://github.com/rustd/AspnetIdentitySample 에서 ASP.NET Identity 샘플을 다운로드하여 성공적으로 실행했습니다.
나는 현재 프로젝트에서 ASP.NET Identity 프레임 워크를 구현하는 중이며 하루 종일 나를 화나게하는 문제가 발생했습니다 …
GetOwinContext()
내 확장 방법으로 존재하지 않습니다HttpContext
클래스 라이브러리에서 ID 프레임 워크를 구현하고 있습니다. Identity 프레임 워크의 모든 최신 (시험판 버전)을 설치했으며이 외에도 모든 것이 제대로 작동합니다.
내 컨트롤러에서 동일한 코드와 동일한 코드를 구현하려고 시도했지만 동일한 문제를 발견했습니다.
나는 어딘가에 대한 참조를 분명히 놓치고 있지만 ..! ..
나를 죽이고있는 코드 블록은 다음과 같습니다.
private IAuthenticationManager AuthenticationManager
{
get
{
return HttpContext.GetOwinContext().Authentication;
}
}
나는 다음에 대한 참조를 추가했다-클래스 라이브러리에서 이것을 시도하고 컨트롤러에서 직접 시도해보십시오.
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin.Security;
using Microsoft.Owin;
using System.Web;
… 이것이 나를 벽으로 몰고 갔다 …. 어떤 생각?
최신 정보
샘플에서 Identity & OWIN 버전을 확인했으며 솔루션에 동일한 버전이 있는지 확인했습니다.
더구나, 샘플에서 객체 브라우저를 검색하면 GetOwinContext
메소드를 찾을 수 있지만 솔루션에서 검색 할 때 찾을 수있는 곳이 없습니다 … 오래된 라이브러리가 있어야하지만 할 수는 없습니다. 그것을 찾아라!
답변
아!
나는 그것을 발견했다 … 나는 여분의 패키지를 가지고 있지 않았다.Microsoft.Owin.Host.SystemWeb
검색하고 설치하면 제대로 작동합니다.
이제는 방금 모든 것을 놓쳤는 지 확실하지 않지만 다양한 자습서를 진행할 때 이러한 라이브러리 또는 패키지에 대한 참조가 없습니다. 이 Identity 프레임 워크를 모두 설치했을 때도 설치되지 않았습니다 … 그것이 본인인지 확실하지 않습니다 ..
편집Microsoft.Owin.Host.SystemWeb
어셈블리
에 있지만 System.Web
네임 스페이스 의 확장 메서드 이므로 전자에 대한 참조가 using
있고 후자가 되어야 합니다.
답변
HttpContext
컨트롤러 외부에있는 경우 전류를 참조해야한다고 생각합니다 . MVC 컨트롤러에는 현재 컨텍스트에 대한 기본 참조가 있습니다. 그러나 그 외에는 현재를 원한다고 명시 적으로 선언해야합니다.HttpContext
return HttpContext.Current.GetOwinContext().Authentication;
표시되지 않는 경우 위에 표시된 코드를 사용하는 새 MVC 5 프로젝트 템플릿 ( IAuthenticationManager
)은 계정 컨트롤러 상단에 다음과 같은 using 문이 있습니다.
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin.Security;
using WebApplication2.Models;
각각을 주석 처리하면 GetOwinContext()
실제로 System.Web.Mvc 어셈블리의 일부인 것처럼 보입니다 .
답변
내 컨트롤러와 Asp.Net 템플릿 컨트롤러의 구문을 사용하여 시행 착오를 한 후
using System.Web;
나를 위해 문제를 해결했습니다. 또한 다음을 추가해야합니다.
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
GetUserManager 메서드를 사용합니다.
Microsoft는 마우스 오른쪽 버튼으로 클릭하여 자동 으로이 문제를 해결하고 누락 된 다른 구문과 같은 문제를 해결할 수있는 방법을 찾지 못했습니까?
답변
필자의 경우 nuget을 통해 Microsoft.AspNet.WebApi.Owin 참조를 추가 하면 트릭이 발생했습니다.
답변
너겟 패키지를 설치했는지 확인하십시오 Microsoft.AspNet.Identity.Owin
. 그런 다음 System.Net.Http
네임 스페이스를 추가하십시오 .
답변
그냥 사용
HttpContext.Current.GetOwinContext ()
내 경우에는 트릭을 수행했습니다.
답변
웹 API 프로젝트에서이 오류가 발생하는 개발자의 경우-
GetOwinContext 확장 메소드는 System.Web.Http.Owin
dll에 정의되어 있으며 하나 이상의 패키지가 필요합니다 Microsoft.Owin.Host.SystemWeb
. 이 패키지는 nuget에서 프로젝트에 설치해야합니다.
패키지 링크 : OWIN 패키지 설치 명령-
Install-Package Microsoft.AspNet.WebApi.Owin
System.web 패키지에 링크 : 패키지 설치 명령-
Install-Package Microsoft.Owin.Host.SystemWeb
이 오류를 해결하려면 귀하의 경우에 오류가 발생하는 이유를 찾아야합니다. 코드에서 아래 사항을 확인하십시오-
-
당신은 참조해야합니다
Microsoft.AspNet.Identity.Owin;
Microsoft.AspNet.Identity.Owin 사용;
-
정의
GetOwinContext()
아래를HttpContext.Current
아래로 –return _userManager1 ?? HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
또는
return _signInManager ?? HttpContext.Current.GetOwinContext().Get<ApplicationSignInManager>();
GetOwinContext ()가 사용되는 완전한 코드-
public ApplicationSignInManager SignInManager
{
get
{
return _signInManager ?? HttpContext.Current.GetOwinContext().Get<ApplicationSignInManager>();
}
private set
{
_signInManager = value;
}
}
GetOwinContext ()가 사용되는 코드 파일에서 네임 스페이스를 사용하고 있습니다.
using AngularJSAuthentication.API.Entities;
using AngularJSAuthentication.API.Models;
using HomeCinema.Common;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin.Security.DataProtection;
한 프로젝트에서 다른 프로젝트로 코드를 이동하는 동안이 오류가 발생했습니다.