技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

IIS7中Ajax.AjaxMethod無效的原因及解決方法

來源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-12-28 00:13┆點(diǎn)擊:

使用Ajax.AjaxMethod方法在asp.net的服務(wù)器下一切正常,用iis的時(shí)候,js中總是cs類找不到,具體的解決方法如下,遇到類似情況的朋友可以參考下

 

最近做用Ajax.AjaxMethod方法的時(shí)候,在asp.net的服務(wù)器下一切正常,用iis的時(shí)候,js中總是cs類找不到,我就郁悶了,折騰了大半天,終于找到錯(cuò)誤原因了。

因 為我發(fā)布網(wǎng)站用的是iis7,所以在web.config位置文件 中<system.webServer><handlers>></handlers><system.webServer> 里加入<add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" />標(biāo)簽。

我的問題就是由于沒有注意到iis版本問題,導(dǎo)致的。。。悲了個(gè)劇!

現(xiàn)在將整個(gè)方法要注意的都寫下來,也方便以后再看,希望的的遭遇能讓碰到同樣錯(cuò)誤的人看到,省下一點(diǎn)寶貴的時(shí)間,畢竟生命誠可貴嗎,少費(fèi)點(diǎn)神,少掉幾根毛,哈哈。。。

直接在網(wǎng)上找篇全面的,別罵我抄襲。。。

使用AjaxMethod要滿足一下幾點(diǎn):
1、如果還沒有ajax.dll文件,就先下載一個(gè)來
2、將ajax.dll添加到項(xiàng)目引用中:在VS的解決方案資源管理器中右鍵點(diǎn)擊項(xiàng)目名稱--“添加項(xiàng)目引用”--瀏覽,找到ajax.dll確定
3、webCofig中<httpHandlers>加上<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>節(jié)點(diǎn)
如 果是IIS7,則需要在<system.webServer></system.webServer>里加上<add name="ajax" verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
在CS程序中加上

復(fù)制代碼 代碼如下:


protected void Page_Load(objectsender,EventArgse)
{
Ajax.Utility.RegisterTypeForAjax(typeof(ClassName));//ClassName是這個(gè)CS文件的類名
}


編寫CS方法,方法前加上[Ajax.AjaxMethod()],
如果要使AjaxMethod里面能調(diào)用session,寫成:[Ajax.AjaxMethod(HttpSessionStateRequirement.Read)] ,
如:

復(fù)制代碼 代碼如下:


[Ajax.AjaxMethod()]
public string GetAddress(string UserID)
{
string Address="";
//do somthing to get the address here
return Address;
}


注意方法要寫成public,否則在JS里調(diào)用的時(shí)候會(huì)提示“不支持此屬性或方法”

4、確保頁面中有<form runat="server"></form>標(biāo)簽。

5、ASPX的JAVASCRIPT中調(diào)用時(shí)加上類名 ,如:
var address = ClassName.GetAddress('123').value;