2010-12-21 8 views
0

単なる数値を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?

ありがとうございました!

+0

毎回「キャッシュ値」を取得している可能性はありますか? – decyclone

答えて

0

ajaxリクエストのプロパティに「cache: false」を追加すると、ブラウザが本当に毎回URLを要求するように強制してください。そうしないと、URLが変更されないため、すべての正常なブラウザがGETリクエストのレスポンスをキャッシュします。

+0

素晴らしい! 私はcache:falseを追加して作業を開始しました。 ジッタありがとう。 しかし興味深いことに、私がchangetypeを投稿すると、動作しなくなります – helloworld

関連する問題