単なる数値を1だけインクリメントして値を返す簡単な方法を作成しました。JQueryを使用してWCFを呼び出す際にシングルトンメソッドで問題が発生する
[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>
(原因シングルトン行動に予想されるように)私は、値がXML応答に1ずつ増加し続けてリフレッシュするたびに取得します
PROBLEM
私のように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?
ありがとうございました!
毎回「キャッシュ値」を取得している可能性はありますか? – decyclone