У меня есть проект Web-Api с контроллерами и всем необходимым, который я хочу разместить как службу Windows. Я создал новый проект и добавил туда элементы WindowsService
и ServiceInstaller
, поэтому мое решение выглядит так:
Моя конфигурация:
private HttpSelfHostServer _server;
private readonly HttpSelfHostConfiguration _config;
public const string ServiceAddress = "http://localhost:333";
public WebApiService()
{
InitializeComponent();
_config = new HttpSelfHostConfiguration(ServiceAddress);
// Set our own assembly resolver where we add the assemblies we need
CustomAssembliesResolver assemblyResolver = new CustomAssembliesResolver();
_config.Services.Replace(typeof(IAssembliesResolver), assemblyResolver);
_config.Routes.MapHttpRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = RouteParameter.Optional });
}
public class CustomAssembliesResolver : DefaultAssembliesResolver
{
public override ICollection<Assembly> GetAssemblies()
{
ICollection<Assembly> baseAssemblies = base.GetAssemblies();
List<Assembly> assemblies = new List<Assembly>(baseAssemblies);
var controllersAssembly = Assembly.LoadFrom(@"D:\Regula\WebApiService\WebApiService\bin\WebApiService.dll");
baseAssemblies.Add(controllersAssembly);
return assemblies;
}
}
Я пытался следовать предложениям этого потока, но мне это не помогло - я все еще получаю:
Не найдено ни одного типа, соответствующего контроллеру с именем «Дом».
По сути, я пытаюсь вызвать HomeController
, расположенный в проекте WebApiService
, из проекта WebApiHost
.
Заранее спасибо!
CustomAssembliesResolver
кажется актуальным. - person Jodrell   schedule 19.08.2013