我目前正在使用jquery ajax来调用pagemethod(效果很好);
$.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
}
});
页面方法;
<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函数。为了快速启动并运行,我可以
这两者都很垃圾。
所以唯一合理的方法是调用wcf(webget)方法。 这将具有意义的好处,我将不必手动将对象序列化为json。它将为我完成。
我已经在解决方案中有一个安静的网络服务,但我对从我的webapp调用它很谨慎。我宁愿将所有代码都存储在我的webapp中,而不是依赖于将在同一iis服务器上的不同应用程序池中的Web服务。它可能需要冷启动等,我需要快速。
我使用模板“支持AJAX的WCF服务”向我的webapp添加了一个wcf文件。但是通过这样做,我正在使用web.config等中的端点弄乱我的webapp(我现在得到500个System.ServiceModel.ServiceActivationException异常)
所以,直到我的问题.... 调用我的函数的最佳方法是什么? (我认为它必须是我宁静的网络服务) 还有其他选择我不考虑吗?
非常感谢。
答案 0 :(得分:2)
您应该使用支持AJAX的ASMX服务或使用普通的ASHX处理程序。
如果你创建一个ASHX处理程序,你需要自己处理解析和安全性;我推荐一种ASMX服务,它与你的页面方法非常相似。