2010-06-18 16 views

cevap

18

Sen Kullanıcı nesnesine erişimi yoktur.

yerine Application_AuthenticateRequest kullanmayı deneyin. https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5771721.html

Ve uygulama yaşam döngüsünün MSDN örneklerde: Burada

tüm Global.asax olayların bir açıklama var http://msdn.microsoft.com/en-us/library/ms178473.aspx

Düzenleme: ne yaptığınızı görüyorum. değil beyanı (sözdizimi yanlış üzgün, ben VB.NET kullanmayın) ve eğer varsa deyimi değiştirin:

Sub Application_AuthenticateRequest() 
    If Context.User <> Nothing Then 
     Throw New Exception("User now exists") 
End Sub 

Bu yöntem kereden fazla çarparsa olduğunu göreceksiniz. İstisna ikinci veya üçüncü saate kadar atılmaz. Çünkü her talep uygulama yaşam döngüsünü takip eder. Bu nedenle, kullanıcı boş olduğunda hangi eylemi gerçekleştirmek yerine, kullanıcı boş olmadığında onu gerçekleştirmelisiniz. Amacınız dinamik erişimi kısıtlamak için ise

, size Ancak

kısıtlayan ediyoruz dosyaları ayrı HttpModule'ü oluşturup aktarmayı unutmayın, tüm yeniden üstlenmek için dikkatli olmak gerekir ASP.NET Uygulama Güvenliği altyapısı. Bunun yerine, role göre belirli klasörlere erişimi kısıtlayabilirsiniz.

+0

Lütfen diğer yanıtı Julien ... http://stackoverflow.com/questions/3072768 adresinden kontrol edin./net-application-beginrequest-how-to-get-user-reference/3072801 # 3072801 – Ropstah

+0

ropstah: Şimdi neler olduğunu anlıyorum. Uygulama, kimlik doğrulama isteği işlenmeden önce birden fazla istekte bulunma (görüntüler, komut dosyaları, stil sayfaları vb. Için). Bu diğer dosya istekleri kimlik doğrulamasına gerek duymayabilir ve bu nedenle istisna durumunuz atılır. Güncelleştirmeyi yanıtımı deneyin ve açıklığa kavuşturun. Ayrıca, Kullanıcı nesnesi gerektiren kodunuzla ne elde etmeye çalışıyorsunuz? –

+0

Bu durum böyle değildi, ancak ** “Global.asax” yaşam döngüsü ile ilgili ** idi. "_Application_AuthenticateRequest_" ifadesinden sonra "Application_AuthorizeRequest()" işleminde sadece ** kullanılabilir olan User.IsInRole() işlevine ihtiyacım vardı. – Ropstah

8

Hayır, bunun yerine Application_AuthenticateRequest kullanmalıdır. Bir kullanıcın olduğu en erken noktadır. istek henüz doğrulanmış değil çünkü

+0

Bu bir istisna, hala hiçbir kullanıcı veya ne atar? Alt Uygulama_AuthenticateRequest() Context.User Hiçbir Şey Olmuyorsa Yeni Özel Durum Atın ("Kullanıcı Yok") End Sub – Ropstah

İlgili konular