2

我创建了一个新的 ASP.NET MVC 5 项目。我已经通过 Nuget 安装了适用于 .NET 和 Session Provider 的 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 中没有任何项目。

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

我究竟做错了什么?

谢谢!!

4

3 回答 3

1

您是否在会话中存储任何内容?如果您不是您,则无需存储任何内容,并且 DynamoDB 中将没有记录。

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

于 2015-05-29T17:04:41.853 回答
0

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

于 2015-01-28T17:02:41.883 回答
0

这就是我所做的

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

在 system.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;

无需担心连接 amazon sdk 会处理它。您需要提及正确的访问密钥和密钥。

于 2018-08-02T04:18:40.630 回答