HttpContext.Current.User ist in ControllerBase null (asp.net mvc)

8

Ich habe eine ControllerBase -Klasse in einer ASP.NET MVC-Anwendung. Die anderen Controller erben von ControllerBase .

Ich möchte auf HttpContext.User.Identity.Name zugreifen, aber HttpContext ist null . Was ist los?

%Vor%     
takayoshi 13.09.2010, 20:47
quelle

2 Antworten

11

Fügen Sie Ihren Code zu diesem Ereignis in Ihrer ControllerBase hinzu:

%Vor%     
Nik 13.09.2010, 20:48
quelle
5

Ihr Controller wird erstellt, bevor der HttpContext von ASP.NET festgelegt wurde. Wie Nik sagt, müssen Sie diesen Code in eine überschriebene Methode in Ihrer Klasse einfügen.

Ich möchte auch darauf hinweisen, dass es abhängig von HttpContext direkt unmöglich macht, Komponententests auf einem Ihrer Controller durchzuführen, die diese Klasse erweitern. Aus diesem Grund verwenden viele der Methoden (wie die Methode Execute) in der Klasse ControllerBase ein RequestContext als Argument. Sie können sagen:

%Vor%

... das es ermöglicht, Ihre Controller mit "falschen" Kontexten für Unit-Testzwecke zu erstellen und auszuführen.

    
StriplingWarrior 13.09.2010 20:54
quelle