【发布时间】:2011-02-18 02:58:37
【问题描述】:
我目前正在使用 jquery ajax 来调用页面方法(效果很好);
$.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 函数的位置。为了快速启动并运行它,我可以
- 将该函数复制到我的新 aspx 页面,并以相同的方式调用它。
- 继续指向原来的aspx页面。
这两个都很垃圾。
所以剩下的唯一合理的方法是调用 wcf (webget) 方法。 这意味着我不必手动将对象序列化为 json。它会为我完成的。
我的解决方案中已经有一个宁静的网络服务,但我对从我的网络应用程序调用它持谨慎态度。我宁愿所有代码都存在于我的 webapp 中,而不是依赖于将位于同一 iis 服务器上的不同应用程序池中的 web 服务。它可能需要冷启动等,我需要这个快速。
我已使用模板“支持 AJAX 的 WCF 服务”将 wcf 文件添加到我的 web 应用程序中。但是通过这样做,我将我的 webapp 与 web.config 等中的端点弄混了(我目前得到 500 个 System.ServiceModel.ServiceActivationException 异常)
所以,回到我的问题...... 调用我的函数的最佳方式是什么? (我认为它必须是我宁静的网络服务) 还有其他我没有考虑的选择吗?
非常感谢。
【问题讨论】:
标签: vb.net ajax wcf .net-4.0 webforms