0

WebAPI アプリを作成していますが、セッションの読み取りまたは書き込みができないことがわかりました。通常の方法では、NullObject参照エラーが発生します。つまり、次のようになります。

Session["Test"] = "Testing"; var testing = Session["Test"].ToString();

それがこの例の理由を理解できる人はいますか?

using System;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using System.Web.SessionState;
using System.Web.UI.WebControls;
using DotNetNuke.Entities.Modules;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Services.Exceptions;
using DotNetNuke.Web.Api;

namespace DotNetNuke.Modules.ContactsManager
{

    public partial class ServicesController : DnnApiController
    {
       [AllowAnonymous]
       [HttpGet]
       public HttpResponseMessage createRequest(string amount)
       {
          //code omitted     
          HttpContext.Current.Session["Test"] = "Test";
          //code omitted
          return Request.CreateResponse(HttpStatusCode.OK, result);
       }
    }
 }
4

3 に答える 3

1

私は自分の答えを見つけました。それはすべて継承に関するものでした。私の説明は、私が行っているようにまだ学んでいるので、あまりうまく表現されていないかもしれませんが、ここにあります.

私が作業しているクラスは既に ApiController クラスを継承しており、私の DotNetNuke プロジェクトでは、セッションのようなものが "{NameSpace}ModuleBase" クラスに含まれているようです。したがって、IDisposable を実装する

    using(myPorjectModuleBase base = new myProjectModuleBase())
{
 var testing = Session["Test"].ToString();
}

その後、セッションにアクセスできます。

これはおそらく、バージョン 6.2 以降の DotnetNuke プラットフォームでのモジュール開発に固有のものです。

ご協力いただきありがとうございます。

于 2013-02-25T18:47:01.430 に答える
0

次のコードを使用できます。これは C# のサンプル例です。

public static string UserId
    {
        get
        {
            if (HttpContext.Current.Session["UserId"] == null)
            {
                return "";
            }
            return HttpContext.Current.Session["UserId"].ToString();
        }
        set
        {
            HttpContext.Current.Session["UserId"] = value;
        }
    }
于 2013-02-23T04:57:44.290 に答える