Ситация такая:
Есть сайт.
Есть библиотека InternalLibrary
Есть библиотека Plugin.
В InternalLibrary определен интерфейс IPluginCustomAction
public interface IPluginCustomAction
{
void PerformCustomAction(CustomActionRequest request, CustomActionResponse response);
}
В Plugin добавлена reference на проект InternalLibrary и есть такой код класса, реализующего интерфейс из InternalLibrary
public class CountryList : IPluginCustomAction
{
#region IPluginCustomAction Members
public void PerformCustomAction( CustomActionRequest request, CustomActionResponse response )
{
...
}
}
В сайт тоже добавлена ссылка на InternalLibrary и с сайта дергается метод в InternalLibrary и в этом методе есть такой код
*plugin.AssemblyPath — ссылается на расположение plugin dll На диске
try {
Assembly pluginAssembly = Assembly.LoadFrom( plugin.AssemblyPath );
IPluginCustomAction customPlugin = (IPluginCustomAction) pluginAssembly.CreateInstance( plugin.Name + "." + plugin.ActionClass, true );
customPlugin.PerformCustomAction( request, response );
} catch( Exception exception ) {
LogService.WriteException( exception, "Business" );
}
На строчке с CreateInstance выпадает exception.
{"Method 'PerformCustomAction' in type 'Ars.Plugins.CountryList' from assembly 'Plugins, Version=1.0.0.27, Culture=neutral, PublicKeyToken=null' does not have an implementation.":"Ars.Plugins.CountryList"}
Дальше интересней. Создаем консольное приложение, которое выполняет приведенный выше код. Все отрабатывает нормально и без ошибок.
Добавляем в веб-приложение ссылку на ,b,kbjntre Plugin. Все начинает работать. Удаляем ссылку на плагин, перепускаем IIS и перебилдовываем веб-приложение. Все продолжает работать. Пересобираем все, заливаем на сервер — там по-прежнему не работает.
Где проблема и откуда такой странный exception —