2

別のソフトウェア プログラムからサービス コンシューマーにデータを渡すために、VS 2010 で C# Web サービスを作成しています。ここで説明するには複雑すぎる理由により、私が書いている Web サービスは、セッションの存続期間中、いくつかの情報を追跡する必要があります。このデータは、他のソフトウェア プログラムに関連付けられています。メンバー変数として WebService クラスに情報を入れました。別のプログラムで Webservice クラスのオブジェクトを作成し、これらのオブジェクトを保持しました。残念ながら、Webservice オブジェクト内のデータは、現在の関数の範囲を超えて存続しません。ここに私が持っているものがあります:

/* the Web service class */
public class Service1 : System.Web.Services.WebService
{
    protected string _softwareID;
    protected ArrayList _softwareList;

    public Service1()
    {
        _softwareID= "";
        _softwareList = new ArrayList();
    }

    [WebMethod]
    public int WebServiceCall(int request)
    {
        _softwareID = request;
        _softwareList.Add(request.ToString());
        return 1;
    }

    /* other Web methods */
}

/* the form in the application that will call the Web service */
public partial class MainForm : Form
{
    /* the service object */
    protected Service1 _service;

    public MainForm()
    {
        InitializeComponent();
        _service = null;
    }

    private void startSoftware_Click(object sender, EventArgs e)
    {
        //initializing the service object
        _service = new Service1();
        int results = _service.WebServiceCall(15);
        /* etc., etc. */
    }

    private void doSomethingElse_Click(object sender, EventArgs e)
    {
        if (_service == null)
        {
            /* blah, blah, blah */
            return;
        }
        //The value of service is not null
        //However, the value of _softwareID will be a blank string
        //and _softwareList will be an empty list
        //It is as if the _service object is being re-initialized
        bool retVal = _service.DoSomethingDifferent();
    }
}

これを修正するにはどうすればよいですか、それとも別の方法で回避できますか? 助けてくれた人に前もって感謝します。私は、Web サービスの作成に関してまったくの初心者です。

4

1 に答える 1