質問
最初のWebサービスを作成したばかりなので、Webサービスの知識が存在しないと仮定してみましょう。 WebサービスからdbClass関数を呼び出そうとしています。ただし、セッションにあるいくつかのパラメーターが必要です。これらのセッション変数をウェブサービスから呼び出す方法はありますか?
解決
ASP.NET Webサービスを使用していて、セッション環境を維持したい場合、セッションが必要であることを示す属性でWebサービスメソッドを装飾する必要があります。
[WebMethod(EnableSession = true)]
public void MyWebService()
{
Foo foo;
Session["MyObjectName"] = new Foo();
foo = Session["MyObjectName"] as Foo;
}
これを行うと、aspxと同様のセッションオブジェクトにアクセスできます。
メトロ。
他のヒント
セッション変数を追加するサービス層の複雑さを増すことは避けてください。以前に誰かが指摘したように、Webサービスは、引数リストからタスクを実行するために必要なすべてを取得する分離されたメソッドと考えてください。
一般に、Webサービスはセッションデータに依存すべきではありません。それらを通常の方法と考えてください:パラメータが入り、答えが出ます。
Session [" username"]。ToString();が必要な場合aspxの背後にある他のC#ページのように、WebServiceメソッドの上にある[WebMethod]を[WebMethod(EnableSession = true)]
に置き換えるだけです。ありがとう:)メトロ
たぶんこれはHttpContext.Current.Session [" Name]で動作します または、いくつかのパラメータを取得するか、データベースに保存する必要がある場合があります
あなたの質問は少しあいまいですが、最善を尽くして答えます。
セッション変数は、Webサービスをホストしているサーバーではなく、Webサービスを呼び出しているサーバーに存在すると仮定しています。その場合、必要な値をWebサービスメソッドのパラメーターとして渡す必要があります。
ウェブサービスでセッションを使用するには、2つの手順に従う必要があります-
- メソッドで[WebMethod(EnableSession = true)]属性を使用します。
- Session [" Name"] = 50(保存したいもの) 次の例を確認してください。
[WebMethod(EnableSession = true)] public void saveName(string pname) { Session["Name"] = pname; }