ASP.NET MVC 中的 DynamoDB 会话状态

本文关键字:DynamoDB 会话状态 中的 MVC NET ASP | 更新日期: 2023-09-27 18:36:44

我创建了一个新的 ASP.NET MVC 5项目。我已经通过Nuget安装了适用于.NET和会话提供程序的AWS 开发工具包,并且我已经在Amazon上阅读了这篇文章:文章

我在 Web.Config 中有此配置

 <sessionState
  mode="Custom"
  customProvider="DynamoDBSessionStoreProvider">
  <providers>
    <add name="DynamoDBSessionStoreProvider"
      type="Amazon.SessionProvider.DynamoDBSessionStateStore, AWS.SessionProvider"
      AWSProfileName="default"
      Table="ASP.NET_SessionState"
      Region="eu-west-1"
      />
  </providers>
</sessionState>

我使用 IIS Express 运行 Web 应用程序,一切正常(我可以登录和注销),但是如果我访问我的 DynamoDB,则表ASP.NET_SessionState中没有任何项目。

它的工作方式就像自定义状态提供程序被忽略一样...

我做错了什么?

谢谢!!

ASP.NET MVC 中的 DynamoDB 会话状态

您是否在会话中存储任何内容?如果您不是您,则没有要存储的内容,DynamoDB 中也不会有记录。

如果要检查是否已正确设置,请运行将一些数据添加到会话中的测试,然后选中 DynamoDB。然后,您应该在那里看到记录。

在 EC2 实例中使用它,您应该为 DynamoDB 访问设置 IAM 角色。在文章的底部有关于角色的信息。http://aws.amazon.com/iam/然后,应该不需要凭证,因为它是在 EC2 实例的 VPC 中处理的。还要确保 sessionState 标记位于 web.config 中的标记内。

这就是我所做的

  • 首先需要登录到 Amazon 控制台并搜索 DynamoDB。
  • 然后创建一个名称为ASP.NET_SessionState键作为会话ID(字符串)的表,您需要将ReadCapacity设置为3,将WriteCapacity设置为1。
  • 在项目安装包中,AmazonSDK.Core 和 AmazonSDK.DynamoDBV2

在 system.web 部分的 Web 配置中

 <sessionState timeout="20"
   mode="Custom"
   customProvider="DynamoDBSessionStoreProvider">
     <providers>
      <add name="DynamoDBSessionStoreProvider"
      type="Amazon.SessionProvider.DynamoDBSessionStateStore, AWS.SessionProvider"
      AWSAccessKey="{Access key}"
      AWSSecretKey="{Sectret key}"
      Table="ASP.NET_SessionState"
      Region="us-east-1"  
      ReadCapacityUnits="3"
      WriteCapacityUnits="1"/>
  </providers>
</sessionState>

然后在模型中,您给出了可序列化的属性。下面这样的事情

[Serializable]
public class TestModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}

然后在代码中你需要设置会话,像这样

TestModel testModel = new TestModel();
testModel.Id = 1;
testModel.Name = "ItemName";
// When we add this to session an entry will be written to DynamoDB Asp.NetSessionTable
Session["Checkout"] = testModel;

无需担心连接亚马逊 SDK 会处理它。您需要提及正确的访问密钥和私有密钥。