0

I have a site that is a mix of both MVC and WebForms that is utilizing forms authentication. Recently there was a need to switch from using WebForms to handle the authentication to MVC so I created an Account controller with a Login method and created the corresponding view. If someone was already authenticated and tried to visit "account/login", I wanted them to be redirected to the Index page of the controller so I have the following if statement at the top of the action:

if(User.Identity.IsAuthenticated)

There are no issues with this statement on my development machine; however, when I deploy this to the server, the User object is always null. I've searched on stackoverflow and the rest of the internet and have not yet found anything that has resolved the issue.

I should mention that the server this is running on is Windows Server 2008 Standard running IIS7.

Anyone have any ideas on why the User object is always null? I did see a stackoverflow post that mentioned it is because of the way IIS handles extensionless routes; however, when I tried to install the KB mentioned in that post it said the KB didn't apply to my server.

Derek Curtis
  • 239
  • 5
  • 7
  • Are you performing any transforms on your web.config? Have you done a file diff between staging and production configs? – Moby's Stunt Double Mar 04 '16 at 16:28
  • I've compared my development and staging config files and most of the differences between the files were appsetting related or endpoint related - I didn't see anything that struck me as being responsible for the issue. – Derek Curtis Mar 05 '16 at 16:41

1 Answers1

0

Okay - I finally figured out the issue.

I found a post here (http://forums.asp.net/t/1689878.aspx?HttpContext+Current+User+always+null+on+IIS+) that said the issue was because they didn't have runAllManagedModulesForAllRequests set to true. I don't want that set to true so I did a little more searching and ran across this stackoverflow posting: <modules runAllManagedModulesForAllRequests="true" /> Meaning

I checked my entry in the applicationHost.config file and found that it had the precondition of "managedHandler". Once I took that precondition off, then everything started working as expected. The odd thing is that in my development environment the precondition was there, yet it worked without issue. Perhaps it is because my dev box uses IIS 7.5 while the server uses IIS 7.0.

Community
  • 1
  • 1
Derek Curtis
  • 239
  • 5
  • 7