
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 + "さん";
}
}
}

管理人




コメントを書く