Ошибка 500 при обращении к сервису Autofac
Искал похожие ответы в Google, нигде нет ситуации как у меня. Я зарегистрировал сервисы через Autofac. На локалке они работают и автофак их видит. Однако, когда я выложил проект на Linux (CentOS 7), открыл swagger на сервере, делаю вызов сервисов, он выдает ошибку 500 Error: Internal Server Error и еще Undocumented рядом. Вот мои регистрации сервисов. Прошу помочь с этим, уже все перепробовал все догадки.
public static IContainer Init(Action<ContainerBuilder> containerBuilderHandler = null)
{
if (_builder != null)
{
return _container;
}
_builder = new ContainerBuilder();
var assemblies1 = GetAssembliesFromApplicationBaseDirectory(x => x.FullName.StartsWith("Garant.Platform.Service"));
var assemblies2 = GetAssembliesFromApplicationBaseDirectory(x => x.FullName.StartsWith("Garant.Platform.Mailings"));
_builder.RegisterAssemblyTypes(assemblies1).AsImplementedInterfaces();
_builder.RegisterAssemblyTypes(assemblies2).AsImplementedInterfaces();
var assemblies = assemblies1.Union(assemblies2);
_typeModules = (from assembly in assemblies
from type in assembly.GetTypes()
where type.IsClass && type.GetCustomAttribute<CommonModuleAttribute>() != null
select type).ToArray();
containerBuilderHandler?.Invoke(_builder);
foreach (var module in _typeModules)
{
_builder.RegisterModule(Activator.CreateInstance(module) as Module);
}
_container = _builder.Build();
return _container;
}
private static Assembly[] GetAssembliesFromApplicationBaseDirectory(Func<AssemblyName, bool> condition)
{
var baseDirectoryPath = AppDomain.CurrentDomain.BaseDirectory;
Func<string, bool> isAssembly = file => string.Equals(Path.GetExtension(file), ".dll", StringComparison.OrdinalIgnoreCase);
return Directory.GetFiles(baseDirectoryPath)
.Where(isAssembly)
.Where(f => condition(AssemblyName.GetAssemblyName(f)))
.Select(Assembly.LoadFrom)
.ToArray();
}
