簡體   English   中英

ASP.NET Web API會話數據

[英]ASP.NET Web API Session Data

我需要在Web API項目中的Session Data中存儲一個大對象。 然后我需要,客戶端上的一些HTML小部件想要在Web API的會話中訪問該數據,並使用它做不同的事情,比如繪制數據的圖表小部件,列出數據的HTML表。 我不需要為每個客戶端窗口小部件重新計算大型對象,而是需要將其計算為ONCE並將其存儲在會話數據中,以便在同一會話中的客戶端上運行的任何窗口小部件都可以在會話中的不同時間訪問該數據而不必等待服務器重新計算數據。

每個小部件都應使用不同的GET請求URL訪問Web API服務器項目。

我很感激幫助。 我可能已經對如何做到這一點進行了高級概述,但我可以使用一些指導。

這是你如何做到的。

您可以在項目中使用Repository(Repository Pattern),在Repository中,您可以使用計算小部件所需結果的方法等。在Repository方法中定義數據計算的所有邏輯,然后在apiController中獲取Get Request或GetById調用該存儲庫並可以創建一個可在View中使用的會話變量。如果您使用Asp.Net Mvc作為前端,您可以執行相同的調用,將數據存儲到Mvc控制器內的會話中

public class YourControllerName:apiController
{
    public IQueryable<AnyNameListDTO> Get()
    {
        //Your other Code will go here 
        var session = HttpContext.Current.Session;
        if (session != null)
        {
            if (session["AnyName"] == null)
            {
                session["AnyName"] = TheRepository.YourMethodName();
            }
        }
    }
}

如果您使用Asp.Net Mvc作為將使用Web Api的視圖(UI),那么您可以在控制器內創建相同的會話。

public class YourControllerName:Controller
{
    public ActionResult Get()
    {
        //Your other Code will go here 
        Session["AnyName"] = TheRepository.YourMethodName();
    }
}   

您也可以使用HTML5本地存儲。

利用HTML5本地存儲存儲數據,然后使用它。

解決了

從跨域.html頁面檢索Web API會話數據

跨域資源共享就是這樣

ValuesController.cs Web API中)

namespace TestWEB_API.Controllers
{
  public class ValuesController : ApiController
  {

    // GET api/values
    public string Get()
    {
        var session = HttpContext.Current.Session;
        if (session != null)
        {
            if (session["Time"] == null)
                session["Time"] = DateTime.Now;
            return "Session Time: " + session["Time"];
        }
        return "Session is not working";
    }// End Get()

    ...

  }//End Class()
}//End Namespace

然后.html頁面( 不在 WEB API !!!)在另一個.war

httpSessionTest.html

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>

    <script type="text/javascript" src="../Desktop/jquery-2.1.1.js"></script>

</head>
<script>
// !!------------- THIS IS WHAT I NEEDED! ---------------!!
$(function()
{
        $.getJSON('http://localhost:Port/api/values', function(stringPayLoad)
        {
            alert(stringPayLoad);
            $("#dataP").text(stringPayLoad);
        });
});

</script>
<body>
<h3> Web API Session Test </h3>
<p id="dataP">!!! If you see this, it means that the session data didn't load. :(</p>

</body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM