Я получил работающее приложение web-api 2, которое было разработано с использованием значений по умолчанию. Он находится в app.dll
.
Теперь я пытаюсь добавить новый проект консольного приложения, который будет самостоятельно размещать это приложение с помощью Katana. Я добавил app.dll
в качестве ссылки. Проблема в том, что когда я запускаю это автономное приложение и пытаюсь отправить простой запрос на получение в API, оно не находит никаких контроллеров. Я получил следующее сообщение об ошибке: No type was found that matches the controller named 'MyController'.
Теперь я пытаюсь принудительно найти контроллеры, используя здесь. Но, видимо, я делаю что-то не так, так как код в GetAssemblies()
никогда не вызывается.
Пример кода ниже:
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
config.Services.Replace(typeof (IAssembliesResolver), new AssembliesResolver());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);app
appBuilder.UseWebApi(config);
}
}
public class AssembliesResolver : DefaultAssembliesResolver
{
public override ICollection<Assembly> GetAssemblies()
{
ICollection<Assembly> baseAssemblies = base.GetAssemblies();
List<Assembly> assemblies = new List<Assembly>(baseAssemblies);
var controllersAssembly = Assembly.LoadFrom(@"app.dll");
baseAssemblies.Add(controllersAssembly);
return assemblies;
}
}