質問: false; } catch (MySqlException ex) { Debug.WriteLine(ex.ErrorCode.ToString()); } finally { //DB Close } return "OK"; } ```
回答: 今さらながらですが、コードをよく読んでみました。 Web サービスのメソッドは .asmx の中に配置したのではなく、.aspx ページの静的メソッドとして実装したようですね。 そして、問題はそのメソッドの中で、 (1) Session["login_name"] = name; とすると「静的でないフィールド、メソッド、またはプロパティ 'System.Web.UI.Page.Session.get' で、オブジェクト参照が必要です」というエラーになる、そして、 (2) LoginButton.Visible = false; とすると、同様に、「静的でないフィールド、メソッド、またはプロパティ '...aspx.LoginButton' で、オブジェクト参照が必要です」となってコンパイルも通らないという状況と理解しました。 その理解で正しいとすると、(1) は HttpContext.Current.Session で HttpSessionState オブジェクトを取得し、それを操作することで対応できます。例えば: ``` HttpSessionState session = HttpContext.Current.Session; session["login_name"] = name; ``` (2) は Web サービスのメソッドの中では何ともならないです。(jQuery ajax で Web サービスのメソッドを呼んでいるだけで、ポストバックして再描画しているわけではないので) クライアントスクリプトで何とかするほか方法はなさそです。例えば、jQuery ajax のコードの success オプションに設定したコールバックの中で、当該ボタンのスタイルを display: none に設定するスクリプトを追加してはいかがでしょう。 #今回の話とはあまり関係ないことですが、.aspx ページの静的メソッドとして Web サービスメソッドを実装すると、WebMethod 属性の EnableSession プロパティを true に設定しなくてもセッションは使えます。