ASP.Net MVC 5 Membership.GetUser() Issue

今天公司發佈了新的網站

由于沒有好好的做QA / 測試..
所以今天發現了很多的問題…
[如果他們一早聽我之前建議的做法..應該不用那麼失策的]

今天的其中一個問題是和 Asp.Net MembershipAsp.Net Identity有關的
自從Asp.Net MVC 5開始 Asp.netMembership 便用了 ASP.Net Identity 來取代
之前的 ASP.NET MembershipSimple Membership systems
ASP.NET MembershipSimple Membership systems便不能在ASP.Net MVC 5的網站上使用
ASP.Net Identity vs ASP.Net Membership system

所以公司的其中一位同事便將公司另一個網站的asp.net mvc3轉乘mvc5在他的電腦上測試是完全沒有問題的
當我們要把所有系統更新的時候把網站發放到伺服器上變出現了一個登入的問題在登入期間需要花一分半鐘才能進入主頁
公司的其中一個網絡顧問說是我們程式碼的問題..

但是我的同事卻說在他電腦上運行沒有問題
所以應該是網絡的問題
[作一些沒有意思的Argue]
最後因為覺得沒有意思浪費時間說誰對誰錯
所以我變進行了一個小小的除錯個步驟
發現應該是這個程式碼的問題

之後發現原來同事升級網頁的時候真的直接把Asp.Net MVC3 升級到 Asp.Net MVC5
但是沒有把所有和membership有相關的程式碼轉換成使用identity
所以當我在除錯模式是執行這個網頁是在membership這個功能花了很久才能執行下一段程式碼
解決方法十分簡單我們只需要把所有和membership相關的程式碼轉換成identity便可

解決方法
我們只需要把之前使用的 Membership.GetUser()
轉成 User.Identity 便可以了

E.G.
<pre>
string Username = Membership.GetUser().UserName;
</pre>
轉成
<pre>
string Username = HttpContext.Current.User.Identity.GetUserName();
</pre>

Hope you find it useful

One thought on “ASP.Net MVC 5 Membership.GetUser() Issue

  1. Jiannan Lu

    很久没上G+了, 对付这类升级的陷阱,最好的方法就是自己实现一套权限登录库,不然下次升级mvc6还会有类似问题哦.

    哎..怪之怪微软妈妈太溺爱, 什么都给,

    Reply

Leave a Reply