기본값을 사용하여 개발 된 작동중인 web-api 2 응용 프로그램이 있습니다. 그것은 app.dll
에 있습니다.Owin/Katana 셀프 호스팅 시나리오에 대한 별도 dll의 웹 API 코드
이제는 Katana를 사용하여이 애플리케이션을 자체 호스팅하는 새로운 콘솔 앱 프로젝트를 추가하려고합니다. 나는 참고로 app.dll
을 추가했다. 문제는, 내가이 자체 호스팅 애플 리케이션을 실행하고 API에 간단한 요청을 보내려고하면, 그것은 어떤 컨트롤러를 찾을 수 없다는 것입니다. 다음과 같은 오류 메시지가 나타납니다. No type was found that matches the controller named 'MyController'.
이제 컨트롤러를 찾기 위해 this way을 사용하려고합니다. 하지만 분명히 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;
}
}