2016-03-04 42 views
0

我有一個站點是混合使用表單身份驗證的MVC和WebForms。最近需要從使用WebForms切換到MVC身份驗證,因此我使用Login方法創建了一個Account控制器並創建了相應的視圖。如果有人已經通過身份驗證,並試圖進入「賬號/登錄」,我想讓他們被重定向到控制器的索引頁,所以我已經if語句在行動頂部以下內容:IIS服務器上的控制器用戶對象爲空

if(User.Identity.IsAuthenticated) 

有在我的開發機器上這個聲明沒有問題;但是,當我將其部署到服務器時,User對象始終爲空。我搜索了stackoverflow和互聯網的其餘部分,但還沒有找到任何解決了這個問題的東西。

我應該提到運行的服務器是運行IIS7的Windows Server 2008 Standard。

任何人有任何想法,爲什麼用戶對象始終爲空?我看到一個提到它是因爲IIS處理無擴展路由的方式而發佈的stackoverflow帖子;但是,當我試圖安裝該帖子中提到的KB時,它說KB不適用於我的服務器。

+0

你在web.config上執行任何轉換嗎?您是否在分段和生產配置之間完成了文件差異? –

+0

我比較了我的開發和登臺配置文件,並且文件之間的大部分差異與appsetting相關或端點相關 - 我沒有看到任何讓我感到擔心的問題。 –

回答

0

好的 - 我終於明白了這個問題。

我在這裏找到一個帖子(http://forums.asp.net/t/1689878.aspx?HttpContext+Current+User+always+null+on+IIS+),說這個問題是因爲他們沒有將runAllManagedModulesForAllRequests設置爲true。我不希望該設置爲真,所以我做了一些更多的搜索,並跑過這個計算器發佈:<modules runAllManagedModulesForAllRequests="true" /> Meaning

我在applicationHost.config文件中檢查了我的條目,發現它具有「managedHandler」的前提條件。一旦我把這個先決條件關閉了,那麼一切都按預期開始工作。奇怪的是,在我的開發環境中,前提是在那裏,但它沒有問題。也許是因爲我的開發盒使用IIS 7.5而服務器使用IIS 7.0。