2013-12-12 47 views
0

我有我試圖拖動到這十年的老.NET 3.5的WebForms應用程序升級到.NET 4然而,有些東西似乎在驗證過程中打破升級。窗體身份驗證失敗後升級到.NET 4

我的文件夾都制定了這樣的

/Login.aspx 
/Home.aspx 
/Content/Default.aspx 
/Content/Stuff.aspx 

在我的web.config,如下我已經配置的認證和授權:

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" requireSSL="true" name="MyCookie" path="/" cookieless="UseCookies" /> 
</authentication> 
<authorization> 
    <deny users="?" /> 
</authorization> 

,然後加入

<location path="Login.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 

意圖是未經認證的用戶應該只能訪問Login.aspx頁。

當我嘗試訪問應用程序時,我被引導到登錄頁面;然後我可以輸入我的憑證,表單身份驗證完成它的工作,並且我已通過身份驗證。但是,當應用程序將我重定向到Home.aspx時,它立即將我重定向回Login.aspx?ReturnUrl=%2fHome.aspx,所以它顯然認爲我沒有訪問權限。

在我的global.asax中,我爲Application_AuthenticateRequestApplication_PostAuthenticateRequest添加了空事件處理程序,並在它們上設置了斷點。當Application_AuthenticateRequest被擊中時,則Context.User.IdentityFormsIdentity intance,並且Context.User.Identity.IsAuthenticated = true;但是當Application_PostAuthenticateRequestGenericIdentity實例和Context.User.Identity.IsAuthenticated = false

無論我使用IE,Firefox還是Chrome,都會發生這種情況。爲什麼我的用戶會從AuthenticateRequest和PostAuthenticateRequest之間的有效FormsIdentity實例變爲無用的GenericIdentity實例?

回答