1
我得到了一個使用默認開發的web-api 2應用程序。它駐留在app.dll
。在單獨的DLL的Owin/Katana自託管場景的Web 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;
}
}