問題修正,見下文ASP.NET MVC - 會話狀態沒有通過 - >斷點不工作
我在做什麼是這樣的:
生成隨機數 - >商店它在一個會話 - >將Facebook的OAuth服務的'state'參數傳遞給Facebook - >驗證返回的狀態是否與我的會話中的狀態相同(這是爲CSRF保護完成的)。
這一直工作,沒問題。但不知何故,它不再工作(會話似乎是空的,因爲當我嘗試讀取它時,我得到一個NullReferenceException)。我可能改變了一些東西,但我找不到什麼。
我試圖在代碼中由Facebook返回狀態的地方設置斷點,但不知何故它不會觸及斷點......斷點之間的代碼會被執行,但我的斷點不會被命中。
這是執行一切代碼:
public ActionResult SignUpButton()
{
int random = RandomHelpers.GetRandomInteger(null);
Session.Add("facebookState", random.ToString(CultureInfo.InvariantCulture));
ViewBag.Uri = "https://www.facebook.com/dialog/oauth?" +
"client_id=" + _facebookAuthenticationService.GetAppId() +
"&redirect_uri=" + _facebookAuthenticationService.GetReturnUri() +
"&scope=email" +
"&state=" + random;
return PartialView();
}
public ActionResult Register()
{
string error = Request.QueryString["error"];
string state = Request.QueryString["state"];
string originalState = Session["facebookState"].ToString();
(我刪除了簡潔的其餘部分)。 SignUpButton函數返回一個局部視圖,其中包含一個帶有註冊URL的按鈕,導致Facebook。 Facebook返回到localhost:xxx/Account/Register(這是註冊函數),這個函數被擊中(雖然Register中的斷點不做任何事情),並且Session [「facebookState」]上拋出異常ToString( )部分。
這是在web.config中我的會話相關的設置是這樣的:
<sessionState mode="InProc">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</providers>
</sessionState>
我只是不明白。我已經重寫了代碼,以便它不再生成錯誤並從Facebook圖形API返回數據,但是我無法調試那部分代碼(對於記錄:SingUpButton方法中的斷點是擊中)。
我希望任何人都可以幫助我。提前致謝!