Я пытаюсь развернуть веб-сайт на безопасном сервере, но у меня проблемы с отражением.Я думаю, это как-то связано с безопасностью, но я не совсем уверен.
Ошибка возникает при выполнении Assembly.GetTypes ()
ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.]
System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark) +0
System.Reflection.Assembly.GetTypes() +105
Если я просто игнорирую эти исключения ипродолжить загрузку из сборок, ничего не загружается.Похоже, мне вообще не разрешено делать это для каких-либо сборок.Когда я работаю в незащищенном веб-сервере, все работает нормально.Я не знаю много о политиках безопасности IIS, mvc или .net, поэтому любая помощь в правильном направлении будет принята с благодарностью.
Вот код, вызывающий исключение:
private static IEnumerable<IModule> GetModules()
{
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in assembly.GetTypes()) // <--- This one throws
{
var moduleType = type.GetInterface(typeof(IModule).Name);
if (moduleType != null)
{
IModule module = null;
try
{
module = (IModule)Activator.CreateInstance(type, null);
}
catch (ReflectionTypeLoadException ex)
{
// GetInterface() get's all interfaces with the same
// name, so we'll just skip those who isn't ours
logger.Warn("Could not load module", ex);
}
if( module != null)
yield return module;
}
}
}
}