Я создал простой простой метод, который просто увеличивает число на 1 и возвращает значение.
[ServiceContract]
public interface ICalc
{
[OperationContract]
[WebGet(UriTemplate = "getnumber")]
int GetNextNumber();
класс обслуживания:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class Calculator : ICalc
{
int i = 1;
public int GetNextNumber()
{return i++; }
}
Служба размещается с использованием WebHttpBinding ихорошо работает при открытии из браузера.Например, когда я просматриваю http://localhost:8083/Calc/getnumber, я получаю
<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">1</int>
Каждый раз, когда я обновляю, значение постоянно увеличивается на 1 в xml-ответе (как и ожидалось из-за поведения синглтона)
ПРОБЛЕМА
Когда я вызываю ту же службу, используя JQuery, как:
$.ajax(
{
type: "GET",
url: "http://localhost:8083/Calc/getnumber",
data: "",
contentType: "application/html",
processData: true,
success: function (msg) { alertResult(alert(msg.childNodes[0].xml)) }
}
);
Я продолжаю получать один и тот же (последний) номер, и отладчик тоже не вызывается при обслуживании,
Что я не понимаю, так это: если метод не вызывается с использованием JQuery, как я получаю корректный вывод и если вызывается метод, то почему не происходит приращение (что работает правильно, если я вызываю службу простонажми URL сервиса прямо из просмотра) r ???
спасибо!