ASP.NET (C#) WebServiceでSession変数が使えない(Ajax受け側)
2017/5/30 - ASP.NET(WebForms)( ASP.NET )
ASP.NET(WebForms) のWebServiceでSession変数をいくらやっても使えませんでした。
AjaxでJavascriptから、WebServiceでSession変数に値を入れようとしても、なぜか、nullになってしまう現象がおきました。
解決しましたが、忘れる自信があるのでメモ。
ついでに、ファイルの作成から書きます。
Visual Studioのソリューションエクスプローラーから、右クリック→【追加】→【新しい項目を追加】をクリック。
【Webサービス(ASMX)】を選択して追加します。
PHPでは、任意のPHPファイルへ飛べますが、ASP.NETでは、このファイルで処理をするようです。
WebServiceのファイルの[WebMethod]部分に(EnableSession=true)を追加します。
[WebMethod(EnableSession=true)]
これだけでSessionが使えるようになりました。
ファイル全体では、こんな感じです。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Data.SqlClient; using System.Configuration; namespace hogefuga { /// <summary> /// WebService の概要の説明です /// </summary> [WebService(Namespace = "http://hoge")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // この Web サービスを、スクリプトから ASP.NET AJAX を使用して呼び出せるようにするには、次の行のコメントを解除します。 [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { [WebMethod(EnableSession= true)]//ここに追加する。 public void SessionPos(string Key) { Session["fuga"] = Key; } //複数のAjax処理がある場合、下記のように、WebMethodから書く。 [WebMethod] public string Hello(string name) { return name + "さん"; } } }
コメントを書く