gpt4 book ai didi

azure - 无法连接 Azure Redis 缓存

转载 作者:行者123 更新时间:2023-12-03 06:44:23 24 4
gpt4 key购买 nike

我正在尝试将 ASP.NET session 状态存储在缓存(用于 Redis 的 Azure 缓存)中,如此处所述 https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-aspnet-session-state-provider

但是,我收到以下错误。

UnableToConnect on mydomain.redis.cache.windows.net:6379/Interactive,origin: ResetNonConnected, input-buffer: 0, outstanding: 0, last-read:5s ago, last-write: 5s ago, unanswered-write: 1106595s ago,keep-alive: 60s, pending: 0, state: Connecting, last-heartbeat: never,last-mbeat: -1s ago, global: 5s ago, mgr: Inactive, err: neverStackExchange.Redis.RedisConnectionException: UnableToConnect onmydomain.redis.cache.windows.net:6379/Interactive, origin:ResetNonConnected, input-buffer: 0, outstanding: 0, last-read: 5s ago,last-write: 5s ago, unanswered-write: 1106595s ago, keep-alive: 60s,pending: 0, state: Connecting, last-heartbeat: never, last-mbeat: -1sago, global: 5s ago, mgr: Inactive, err: never

    <add name="AzureRedisCacheConnection" connectionString="mydomain.redis.cache.windows.net:6379,password=password=,ssl=False,abortConnect=False"/>
</connectionStrings>


<sessionState mode="Custom" customProvider="AzureCacheForRedisProvider">
<providers>
<!-- For more details check https://github.com/Azure/aspnet-redis-providers/wiki -->
<!-- Either use 'connectionString' OR 'settingsClassName' and 'settingsMethodName' OR use 'host','port','accessKey','ssl','connectionTimeoutInMilliseconds' and 'operationTimeoutInMilliseconds'. -->
<!-- 'throwOnError','retryTimeoutInMilliseconds','databaseId' and 'applicationName' can be used with both options. -->
<!--
<add name="AzureCacheForRedisProvider"
host = "127.0.0.1" [String]
port = "" [number]
accessKey = "" [String]
ssl = "false" [true|false]
throwOnError = "true" [true|false]
retryTimeoutInMilliseconds = "5000" [number]
databaseId = "0" [number]
applicationName = "" [String]
connectionTimeoutInMilliseconds = "5000" [number]
operationTimeoutInMilliseconds = "1000" [number]
connectionString = "<Valid StackExchange.Redis connection string>" [String]
settingsClassName = "<Assembly qualified class name that contains settings method specified below. Which basically return 'connectionString' value>" [String]
settingsMethodName = "<Settings method should be defined in settingsClass. It should be public, static, does not take any parameters and should have a return type of 'String', which is basically 'connectionString' value.>" [String]
loggingClassName = "<Assembly qualified class name that contains logging method specified below>" [String]
loggingMethodName = "<Logging method should be defined in loggingClass. It should be public, static, does not take any parameters and should have a return type of System.IO.TextWriter.>" [String]
redisSerializerType = "<Assembly qualified class name that implements Microsoft.Web.Redis.ISerializer>" [String]
/>
-->
<add name="AzureCacheForRedisProvider" type="Microsoft.Web.Redis.RedisSessionStateProvider"
connectionString="AzureRedisCacheConnection"

/>
</providers>
</sessionState> ````



What am I missing here?

最佳答案

我已经阅读了官方文档,它对我有用

如果您想要支持6379,您需要设置仅允许通过SSL访问=否enter image description here

我也找到了这个官方博客,我认为它对你有用。

Announcing ASP.NET Session State Provider for Redis Preview Release

我的 web.config 文件中的内容。

<sessionState mode="Custom" customProvider="MySessionStateStore">
<providers>
<!-- For more details check https://github.com/Azure/aspnet-redis-providers/wiki -->
<!-- Either use 'connectionString' OR 'settingsClassName' and 'settingsMethodName' OR use 'host','port','accessKey','ssl','connectionTimeoutInMilliseconds' and 'operationTimeoutInMilliseconds'. -->
<!-- 'throwOnError','retryTimeoutInMilliseconds','databaseId' and 'applicationName' can be used with both options. -->
<!--
<add name="MySessionStateStore"
host = "127.0.0.1" [String]
port = "" [number]
accessKey = "" [String]
ssl = "false" [true|false]
throwOnError = "true" [true|false]
retryTimeoutInMilliseconds = "5000" [number]
databaseId = "0" [number]
applicationName = "" [String]
connectionTimeoutInMilliseconds = "5000" [number]
operationTimeoutInMilliseconds = "1000" [number]
connectionString = "<Valid StackExchange.Redis connection string>" [String]
settingsClassName = "<Assembly qualified class name that contains settings method specified below. Which basically return 'connectionString' value>" [String]
settingsMethodName = "<Settings method should be defined in settingsClass. It should be public, static, does not take any parameters and should have a return type of 'String', which is basically 'connectionString' value.>" [String]
loggingClassName = "<Assembly qualified class name that contains logging method specified below>" [String]
loggingMethodName = "<Logging method should be defined in loggingClass. It should be public, static, does not take any parameters and should have a return type of System.IO.TextWriter.>" [String]
redisSerializerType = "<Assembly qualified class name that implements Microsoft.Web.Redis.ISerializer>" [String]
/>
-->
<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="jasonp2rediscache.redis.cache.windows.net:6380" accessKey="kKtOl***kLPg=" ssl="true" />
</providers>
</sessionState>

我的测试步骤。

第1步. 在登录方法中添加Session["loginTime"]

    [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}

// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
Session["loginTime"] = DateTime.Now.ToString();// Add this line
Session["webapp"] = "mywebapp";// Add this line
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}

enter image description here

第2步.通过redsmin连接您的redis缓存。 (https://app.redsmin.com/)

我已在该网站注册以检查值(value)。

第 3 步:运行项目。

enter image description here

第 4 步:检查 redsmin 中的键和值。

enter image description here

关于azure - 无法连接 Azure Redis 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64764441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com