1
我有一個Web-Api項目,包含控制器和所有必需的東西,我想作爲Windows服務託管。 我創建新項目,並添加有一個WindowsService
和ServiceInstaller
項目,所以我的解決辦法是這樣的:自我託管ASP.NET Web-API作爲Windows服務與解決方案中的不同項目中的控制器
我的配置是:
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;
}
}
我試圖按照this thread suggestions,但它並沒有幫助我 - 我仍然得到:
沒有發現類型匹配名爲'Home'的控制器。
基本上,我試圖調用HomeController
位於WebApiService
項目從WebApiHost
項目。
在此先感謝!
「CustomAssembliesResolver」的代碼似乎相關。 – Jodrell
它是從我在帖子中指定的帖子複製/粘貼的,只是改變了目標程序集路徑。 –