2009-05-15 9 views
6

JQuery AJAX kullanan bir web sitem var. Bu JQuery koduGüzelce birlikte oynamak için ASP.NET Cookieless Oturumları ve JQuery AJAX'ı Kullanma

$.post("/ajax/getsomedata.aspx", {'id': id }, 
    function(data) 
    { 
     dosomething(data); 
    } 
); 

ile I = "false", idRequest.Form renkte görünür çerezsiz ile bu çalıştırdığınızda. cookieless = "true", kimlik numarası belirtildiğinde, Request.Form artık yok. Ben

yaptığı şey

GÜNCELLEME, ben verileri korumak ve otomatik bir yönlendirme önlemek için Response.ApplyAppPathModifier() çağrısı ekledi. Ben ** Diago ((ve kendi dosyalarımı siliyorum çünkü onun referansları neler olup bittiğine dair bir takım bilgiler veriyor. Ayrı bir alan hakkında fikrimi severim ama bunu burada yapamam.

Güncellenen kod: MSDNResponse.ApplyAppPathModifier() Eğer değilse Eğer tanımlama bilgisi olmayan oturum durumdadır oturum kimliğinin ekler ve değiştirilmemiş URL'sini döndürür.

hiçbir oturum kimliği olmadığı için göre

$.post("<%=Response.ApplyAppPathModifier("/ajax/getsomedata.aspx")%>", 
     {'id': id }, 
    function(data)  
    {   
     dosomething(data);  
    } 
); 

, ASP.NET yeni bir oturum oluşturur ve bir yönlendirme yapar. form verisi).

cevap

2

Son zamanlarda aynı sorunla uğraştım. Bu cookieless oturumları kullanmanın dört dezavantajlarından biridir. Sunucuya girilirken istek yeniden yazılır ve istek değişkenleri düşer. Bu, ASP.Net kullanarak WebServices ve POST isteği kullanılırken son derece ağrılı olabilir. Bu GET kullanırken iyi çalışır.

Normal posta kullanarak benzer bir sorunla karşılaşacaksınız. Nasıl yapılacağını açıklayan bir here numaralı makale var. This MSDN makalesi de uzunluktaki dezavantajları ele almaktadır.

En iyi çözüm, hizmetlerinizi ayrı bir alanda veya cookieless oturumları kullanmayan IIS Sanal sitesinde kullanmaktır.

Formların kimlik doğrulamasını kodsuz oturumlarla kullanmak da ilginç bir sorundur.

0

Oturum belirtecini isteğinize eklemeniz gerekir. ASP.Net, URL'yi veya gizli form alanlarına eklemelidir. Alın ve jquery parametre nesnesine ekleyin. Bu coz diyemediğim kadarıyla hiç kod yazmamıştım ASP.NET

2

Bütün günümü bu sorunu çözmek için harcadım, bu sadece hızlı bir çözümdür.

PageMethod numaralı çağrı sırasında, oturum kimliği istek URL'si ile iletilmiyor, bu nedenle yeni bir session_start olayı tetikleniyor. Sadece pagemethod numaralı telefonu aramadan önce tam istek yolunu ayarlamamız gerekiyor, böylece yeni oturum başlatma olayı tetiklenmeyecek.

if ('<%= HttpContext.Current.Session.IsCookieless %>==True') { 
    //need to pass session id in request path 
    PageMethods.set_path('<%= System.Web.Configuration.WebConfigurationManager.AppSettings("WebRoot") %>(S(<%=Session.SessionID%>))/secure/PageName.aspx'); 
} 
PageMethods.PageMethodName(param1,param2, CallSuccess, CallFailed); 
İlgili konular