Saya telah mengunduh, dan berhasil menjalankan sampel ASP.NET Identity dari sini: https://github.com/rustd/AspnetIdentitySample
Saya sekarang berada di tengah penerapan kerangka ASP.NET Identity dalam proyek saya dan telah mengalami masalah, yang membuat saya gila sepanjang hari ...
GetOwinContext()
tidak ada sebagai metode ekstensi di blog sayaHttpContext
Saya menerapkan kerangka identitas di perpustakaan kelas. Saya telah menginstal semua (versi pra-rilis) terbaru dari kerangka kerja Identity dan semuanya - selain ini - berfungsi dengan baik.
Saya telah mencoba menerapkan kode yang sama dengan langsung yang sama di controller saya, dan menemukan masalah yang sama.
Saya jelas kehilangan referensi di suatu tempat, meskipun saya tidak tahu apa ..! ..
Blok-kode yang membunuh saya adalah:
private IAuthenticationManager AuthenticationManager
{
get
{
return HttpContext.GetOwinContext().Authentication;
}
}
Saya telah menambahkan referensi ke yang berikut - mencoba keduanya di perpustakaan kelas saya dan juga mengarahkan pada controller, tidak ada yang bekerja untuk saya ...
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin.Security;
using Microsoft.Owin;
using System.Web;
... ini membuat saya naik tembok .... ada ide?
MEMPERBARUI
Saya telah memeriksa versi Identity & OWIN dalam sampel, dan saya telah memastikan saya memiliki versi yang sama dalam solusi saya.
Terlebih lagi, jika saya mencari objek browser pada sampel untuk GetOwinContext
saya dapat menemukan metode, namun ketika saya mencarinya dalam solusi saya itu tidak ditemukan ... Saya harus memiliki beberapa perpustakaan yang ketinggalan zaman, tetapi saya bisa ' t menemukannya!
sumber
var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
(Termasuk saat ini di mana tidak ada dalam pertanyaan).Saya percaya Anda perlu referensi arus
HttpContext
jika Anda berada di luar controller. Pengontrol MVC memiliki referensi dasar untuk konteks saat ini. Namun, di luar itu, Anda harus secara eksplisit menyatakan Anda menginginkan yang sekarangHttpContext
Karena tidak muncul, template proyek MVC 5 baru menggunakan kode yang Anda tunjukkan di atas (the
IAuthenticationManager
) memiliki pernyataan menggunakan berikut di bagian atas pengontrol akun:Mengomentari masing-masing, tampaknya
GetOwinContext()
sebenarnya adalah bagian dari perakitan System.Web.Mvc.sumber
System.Web.Mvc
dari proyek kelas Anda. Ketika dikomentari, itulah yang membuatHttpContext.GetOwinContext()
menjadi tidak diketahui (dan bukanMicrosoft.Owin.Security
majelis)HttpContext
diController
kelas, jadi jika Anda mewarisi itu,HttpContext.GetOwinContext()
berfungsi seperti yang diharapkan. Jika Anda mewarisi dariApiController
sana, tidak ada properti seperti itu. Oleh karena itu,HttpContext
akan merujuk ke kelas, yang mengharuskan Anda untuk menggunakanCurrent
instance kelas. Jadi jika Anda menyalin / menempelkan kode dari Controller ke ApiController dan bertanya-tanya mengapa itu tidak berhasil, ini adalah jawaban untuk Anda.Setelah coba-coba membandingkan pernyataan penggunaan controller saya dan controller Template Asp.Net
Memecahkan masalah bagi saya. Anda juga perlu menambahkan:
Untuk menggunakan metode GetUserManager.
Microsoft tidak dapat menemukan cara untuk menyelesaikan ini secara otomatis dengan klik kanan dan atasi seperti pernyataan penggunaan lainnya yang hilang?
sumber
Dalam kasus saya menambahkan referensi Microsoft.AspNet.WebApi.Owin via nuget melakukan trik.
sumber
Pastikan Anda menginstal paket nuget
Microsoft.AspNet.Identity.Owin
. Kemudian tambahkanSystem.Net.Http
namespace.sumber
Microsoft.Owin.Host.SystemWeb
sudah cukup.Hanya menggunakan
melakukan trik dalam kasus saya.
sumber
Untuk Pengembang mendapatkan kesalahan ini di Proyek Web API -
Metode ekstensi GetOwinContext didefinisikan dalam
System.Web.Http.Owin
dll dan satu paket lagi akan diperlukan yaituMicrosoft.Owin.Host.SystemWeb
. Paket ini perlu diinstal di proyek Anda dari nuget.Tautan Ke Paket : Perintah Instal Paket OWIN -
Tautan ke Paket System.web : Perintah Instal Paket -
Untuk mengatasi kesalahan ini, Anda perlu mencari tahu mengapa hal ini terjadi pada Anda. Silakan Silang periksa poin di bawah ini dalam kode Anda -
Anda harus memiliki referensi
Microsoft.AspNet.Identity.Owin;
menggunakan Microsoft.AspNet.Identity.Owin;
Tetapkan
GetOwinContext()
Di BawahHttpContext.Current
seperti di bawah ini -ATAU
Kode Lengkap Di mana GetOwinContext () digunakan -
Namespace's Saya Menggunakan dalam File Kode di mana GetOwinContext () Digunakan
Saya mendapatkan kesalahan ini saat memindahkan kode saya dari satu proyek saya ke yang lain.
sumber
Untuk mendapatkan UserManager di API
di mana AppUserManager adalah kelas yang mewarisi dari UserManager.
sumber
Saya memiliki semua paket dan penggunaan yang benar, tetapi harus dibangun terlebih dahulu sebelum saya mulai
GetOwinContext()
bekerja.sumber
Cukup instal paket ini dan kode Anda akan berfungsi: => Instal-Paket Microsoft.Owin.Host.SystemWeb -Version 2.1.0
sumber