В настоящее время я использую 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. Это будет сделано для меня.
У меня уже есть спокойный веб-сервис в решении, но я опасаюсь вызывать его из моего веб-приложения. Я бы предпочел, чтобы весь код находился в моем веб-приложении, а не зависел от веб-службы, которая будет находиться в другом пуле приложений на том же сервере iis. Может потребоваться холодный запуск и т. Д., И мне нужно, чтобы это было быстро.
Я добавил файл wcf в свое веб-приложение, используя шаблон «Служба WCF с поддержкой AJAX». Но затем, делая это, я путаю свое веб-приложение с конечными точками в web.config и т. Д. (И в настоящее время получаю 500 исключений System.ServiceModel.ServiceActivationException)
Итак, до моего вопроса ....
Какой лучший способ вызвать мою функцию? (Я думаю, это должен быть мой спокойный веб-сервис)
Есть ли другой вариант, который я не рассматриваю?
Большое спасибо.