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中没有任何项目。
它的工作方式就像自定义状态提供程序被忽略一样...
我做错了什么?
谢谢!!
您是否在会话中存储任何内容?如果您不是您,则没有要存储的内容,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 会处理它。您需要提及正确的访问密钥和私有密钥。