ASP.NET Identity örneğini buradan indirdim ve başarıyla çalıştırdım: https://github.com/rustd/AspnetIdentitySample
Şu anda projemde ASP.NET Identity çerçevesini uygulamanın ortasındayım ve bütün gün beni çıldırtan bir sorunla karşılaştım...
GetOwinContext()
,HttpContext
üzerinde bir uzantı yöntemi olarak mevcut değil
Kimlik çerçevesini sınıf kütüphanesinde uyguluyorum. Identity framework'ün en son (yayın öncesi sürüm) tüm sürümlerini yükledim ve bunun dışında her şey iyi çalışıyor.
Aynı kodu kontrolörümde aynı doğrudan uygulamayı denedim ve aynı sorunu buldum.
Belli ki bir yerde bir referansı kaçırıyorum, ama ne olduğu hakkında hiçbir fikrim yok....
Beni öldüren kod bloğu:
private IAuthenticationManager AuthenticationManager
{
get
{
return HttpContext.GetOwinContext().Authentication;
}
}
Aşağıdakilere referanslar ekledim - bunları hem sınıf kitaplığımda hem de doğrudan denetleyicide denedim, hiçbiri benim için çalışmıyor ...
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin.Security;
using Microsoft.Owin;
using System.Web;
... bu beni çılgına çeviriyor.... herhangi bir fikir?
GÜNCELLEME
Örnekteki Identity & OWIN sürümlerini kontrol ettim ve çözümümde aynı sürümlere sahip olduğumdan emin oldum.
Dahası, örnekteki nesne tarayıcısında GetOwinContext
için arama yaparsam yöntemi bulabiliyorum, ancak çözümümde aradığımda hiçbir yerde bulunamıyor... Güncel olmayan bir kütüphanem olmalı, ama bulamıyorum!
ARGH!
Buldum... Microsoft.Owin.Host.SystemWeb` adında ekstra bir paketim yoktu.
Bunu arayıp yükledikten sonra işe yaradı.
Şimdi - her şeyi kaçırıp kaçırmadığımdan emin değilim, ancak çeşitli öğreticilerden geçerken böyle bir kütüphane veya pakete HİÇBİR referans bulamadım. Ayrıca tüm bu Identity framework'ü yüklediğimde de yüklenmedi... Sadece bende mi sorun var emin değilim.
EDIT
Microsoft.Owin.Host.SystemWebderlemesinde olmasına rağmen,
System.Webad alanında bir uzantı yöntemidir, bu nedenle birincisine referansa sahip olmanız ve ikincisini
kullanıyor` olmanız gerekir.
Denetleyicinin dışındaysanız geçerli HttpContext
e başvurmanız gerektiğine inanıyorum. MVC denetleyicileri geçerli bağlam için bir temel referansa sahiptir. Ancak, bunun dışında, geçerli HttpContext
i istediğinizi açıkça beyan etmeniz gerekir
return HttpContext.Current.GetOwinContext().Authentication;
Görünmemesine gelince, yukarıda gösterdiğiniz kodu (IAuthenticationManager
) kullanan yeni bir MVC 5 proje şablonu, hesap denetleyicisinin üstünde aşağıdaki using deyimlerine sahiptir:
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;
Her biri yorumlandığında, GetOwinContext()
in aslında System.Web.Mvc derlemesinin bir parçası olduğu görülür.
Microsoft.AspNet.Identity.Owinnuget paketini yüklediğinizden emin olun. Ardından
System.Net.Http` isim alanını ekleyin.