我正在使用ASP.NET MVC 3網站,並且本地版本上的所有內容都可以正常工作,但是當我將其上載到雲時,登錄過程不會' t按預期工作。這裏是我的登錄操作:jQuery AJAX請求返回JSON字符串,並且不在Windows Azure上重定向
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string username, string password)
{
password = Project_0._1._1.Cloud_Platform.Methods.Encrypt(password);
REST_Auth.REST_AuthResponse loginResponse = REST_Auth.GetAuthToken(username, password, Project.Instance.AdModule.DeviceID);
if (loginResponse.ErrorID != "AUTH00002")
{
HttpCookie _username = new HttpCookie("username");
HttpCookie _password = new HttpCookie("password");
HttpCookie _token = new HttpCookie("token");
HttpCookie _userID = new HttpCookie("userID");
_username.Value = username;
_password.Value = password;
_token.Value = loginResponse.Token;
_userID.Value = loginResponse.UserID;
this.ControllerContext.HttpContext.Response.Cookies.Add(_username);
this.ControllerContext.HttpContext.Response.Cookies.Add(_password);
this.ControllerContext.HttpContext.Response.Cookies.Add(_token);
this.ControllerContext.HttpContext.Response.Cookies.Add(_userID);
}
return Json(loginResponse);
}
而這裏的jQuery的電話:
$.ajax({
type: "POST",
url: "login",
data: $("#login_form").serialize(),
dataType: 'json',
beforeSend: function() {
$("#login_fields").fadeOut(300);
if ($("#lresponse"))
$("#lresponse").remove();
},
success: function (data, textStatus, jqXHR) {
if (data.ErrorID == "AUTH00002") {
$("#login_fields").fadeIn(500);
$("#login_fields").append("<span id='lresponse'>Invalid login details. Try again</span>");
}
else {
$("#login_fields").fadeIn(500);
window.location = "/";
}
},
error: function (error) {
alert(error);
}
});
在本地主機上它按預期工作:成功,它重定向到主頁。但是,在雲端,實時版本中,它只顯示JSON結果,而不是呈現HTML頁面。我試過一切可能的東西。有其他人處理這個問題嗎?
它打到你的錯誤處理程序,並顯示在警告框中的JSON結果?還是用JSON結果替換頁面內容?無論如何,如果您使用Fiddler或類似工具追蹤迴應並比較差異,這將會很有幫助。 – 2012-04-03 20:09:29
它擊中成功函數,而不是重定向,它用JSON結果替換頁面內容。到現在爲止你有沒有遇到這種行爲? – Kyprulez 2012-04-05 08:04:01
我想不出有什麼特別的事情可以做到。您可以使用Fiddler找到一些內容,並比較您從本地主機獲取的響應與實況網站上的響應。我的直覺是它可能涉及響應的內容類型,但我可能很容易出錯。 – 2012-04-05 14:34:46