ここのサーバーにこのコードがあります(はい、ASMX が悪い考えであることはわかっていましたが、何らかの理由で WCF がまったく機能しません)。
<%@ WebService Language="C#" Class="Test" %>
using System.Web;
using System.Web.Services;
[WebService(Namespace = "http://smplsite.com/smplAccess")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Test : System.Web.Services.WebService
{
State s;
public Test()
{
s = (Session["foo"] ?? (Session["foo"] = new State())) as State ;
}
[WebMethod(EnableSession = true)]
public void Set(int j) { i=j; }
[WebMethod(EnableSession = true)]
public int Get() { return i; }
}
class State
{
public int i = 5;
}
次のコードを実行すると:
class Program
{
static void Main(string[] args)
{
var ser = new ServiceReference1.TestSoapClient();
Console.WriteLine(ser.Get());
ser.Set(3);
Console.WriteLine(ser.Get());
}
}
私は戻ってくることを期待しています:
5
3
しかし、私は戻ってきました
5
5
私の解決策
- プロキシ
wsdl.exe
クラスの生成に使用する - 必要に応じて参照を追加してコンパイルします
- マーティンのソリューションを使用する
編集: State オブジェクトを追加しました。