1. ホーム > 
  2.  ASP.NET(WebForms)
webserviceファイル追加

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)】を選択して追加します。

webserviceファイル追加

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

コメント

コメントを書く

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA