2011-09-16 40 views
3

我通常是MVC chap,所以jquery ajax通常很輕鬆。我工作在一箇舊的webforms項目,但無法讓jquery ajax與我本地iis上的webmethod進行對話。它雖然在視覺工作室自己的網絡服務器上工作。asp.net 4 jQuery Ajax不能在iis中使用頁面方法

的jQuery是:

//Collect data 
    var prefs = { 
     'pref_1': $('input#pref_1').val(), 
     'pref_2': $('input#pref_2').val(), 
     'pref_3': $('input#pref_3').val(), 
     'pref_4': $('input#pref_4').val() 
    } 

    //Send data via ajax 
    //Uncomment below to send requests 
    var loc = window.location.href; 
    var substr = loc.split("?"); 
    $.ajax({ 
     url: substr[0] + "/SetUserPreferences", 
     type: "POST", 
     data: JSON.stringify(prefs), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8" 
    }); 

正如你可以看到我帶的位置href和尋找在那裏的方法。
在頁面的Index.aspx我:

[WebMethod] 
public static void SetUserPreferences(string pref_1, string pref_2, string pref_3, string pref_4) 
{ 
    using (lbDataContext dc = new lbDataContext()) 
    { 
     MoreBang_Preference preference = new MoreBang_Preference(); 
     preference.UserId = (int)HttpContext.Current.Session["UserId"]; 
     preference.DateSubmitted = DateTime.Now; 
     preference.Preference1 = pref_1; 
     preference.Preference2 = pref_2; 
     preference.Preference3 = pref_3; 
     preference.Preference4 = pref_4; 
     dc.MoreBang_Preferences.InsertOnSubmit(preference); 
     dc.SubmitChanges(); 
    } 
} 


我的工作,該網站是一把umbraco網站,它有

<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

在網絡的部分的HttpModules配置並以Asp.Net 4集成模式運行。
它也有
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
位於web config的system.webServer部分的modules標記中。
我非常難以理解爲什麼它不工作。

非常感謝那些貢獻者!

+0

我知道它並沒有真正的幫助,但我更喜歡使用WCF服務器端Ajax。我發現很容易處理。 –

+0

您好,謝謝,我通常會做類似的事情,但我需要訪問Session來完成這個特定的例行工作。 – Chiefy

+0

如果添加AspNetCompatibilityRequirementsAttribute屬性,那應該可以讓您從服務訪問會話。從來沒有嘗試過,但文檔說它是如此。 –

回答

0

最後我更改爲使用webservice而不是頁面方法,並將會話值發佈到頁面上的隱藏字段,然後發送到Web服務。不像ID一樣乾淨,但現在工作。令人沮喪的是,我從來沒有遇到過讓這件事情在iis之前工作的問題。

+0

有相同的問題,並解決了相同的解決方案建議..但任何人都得到解決方案。有什麼關於IIS配置? – jeegnesh

相關問題