Я создал очень простой Azure Function
, который использует Dependency Injection
для использования моих общих библиотек.
Функция отлично работает локально на моем компьютере разработчика, но когда я публикую sh на Azure, я получаю ошибку, в которой говорится, что StackExchange.Redis
не определена конечная точка - см. Ниже: ![enter image description here](https://i.stack.imgur.com/rL7sE.jpg)
Я где-то читал, что это может быть из-за того, что ConnectionMultiplexerr
не было static
. Вот код моего RedisCache
клиента в моей общей библиотеке:
public class RedisCache
{
private static IDatabase _cache;
private static ConnectionMultiplexer connection;
private Dictionary<string, SemaphoreSlim> _locks;
public RedisCache(IConfiguration configuration)
{
var host = configuration["redisHost"];
var key = configuration["redisKey"];
if (_cache == null)
{
connection = ConnectionMultiplexer.Connect($"{host},abortConnect=false,ssl=true,password={key}");
_cache = connection.GetDatabase();
}
_locks = new Dictionary<string, SemaphoreSlim>();
}
public async Task<T> GetObjectAsync<T>(string key)
{
var serializedCachedData = await _cache.StringGetAsync(key);
if (!serializedCachedData.HasValue)
return default(T);
return JsonUtils.Deserialize<T>(serializedCachedData.ToString());
}
}
А вот как я управляю созданием одноэлементного экземпляра моего RedisCache
клиента в Startup.cs
в моем приложении Azure Function
:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.Build();
builder.Services.AddSingleton(new RedisCache(configuration));
}
}
Есть идеи, что может быть причиной этой проблемы?