我目前使用jquery ajax來調用pagemethod(這很好用);與jquery訪問webmethod
$.ajax({
type: "POST",
url: "ArticleList.aspx/GetArticleTags",
data: "{'articleId' : " + articleId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.hasOwnProperty("d")) { msg = msg.d; }
var tags = JSON.parse(msg);
//do something
}
});
pagemethod;
<WebMethod()>
Public Shared Function GetArticleTags(ByVal articleId As Integer) As String
Using myDb As New MyRepository
Dim js As New JavaScriptSerializer
Dim returnString = js.Serialize((From t In myDb.GetArticleTags(articleId) Select t.TagId, t.Tag).ToList)
Return returnString
End Using
End Function
我現在處於這樣的位置,我需要從多個頁面訪問我的GetArticleTags函數。要快速啓動並運行我可以
- 將函數複製到我的新的aspx頁面,並以相同的方式調用它。
- 繼續指向原始的aspx頁面。
這兩個都很漂亮垃圾。
所以剩下的唯一合理的方法是調用wcf(webget)方法。 這將有意義的好處,我將不必手動序列化對象到JSON。這將爲我完成。
我已經在解決方案中有一個安靜的web服務,但我很擔心從我的webapp調用它。我寧願所有代碼都在我的web應用程序中,而不是依賴於將位於同一個iis服務器上的不同應用程序池中的Web服務。它可能需要冷啓動等,我需要這很快。
我已經使用模板「啓用AJAX的WCF服務」向我的webapp添加了一個wcf文件。但是,然後通過這樣做,我糊塗了web.config中的端點web服務器等(我目前正在得到500 System.ServiceModel.ServiceActivationException異常的)
所以,回到我的問題... 。 什麼是調用我的函數的最佳方式? (我認爲它必須是我寧靜的webservice) 有沒有另一種選擇,我不考慮?
非常感謝。
我實際上確實認爲asmx服務....但後來想到nahhhh,並立即刪除它(wcf這些天總是勝過我的asmx [但對於正確的web服務])。但是你可能是對的,這將是我最好的解決方案。 – GordonB 2010-05-11 12:26:39