2017-04-16 22 views
0

延伸CustomApiController時相匹配的控制器名稱我有2個項目一個C#溶液:沒有類型被發現從外部DLL

  1. 庫DLL
  2. web應用(網絡API)

在第一個項目我已經延長了ApiController類以自定義一些行爲,我的目標是創建其他項目時,通過簡單地添加到它的引用,提高我的工作效率使用該DLL。 我做的代碼是一樣的東西:

public class CustomController : ApiController 
    { 
     //add some properties and private/protected helping methods 

     public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) 
     { 
      //customize some initialization before processing request. 
     } 
    } 

第二個項目是一個虛擬項目來測試,如果第一個作品,我添加了第一個項目的引用(DLL庫)

public class EmptyController : CustomController 
{ 
    [HttpGet] 
    public string Home() 
    { 
     return "whatever."; 
    } 
} 

而且配置文件:

 config.MapHttpAttributeRoutes(); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { action = "get", id = RouteParameter.Optional } 
     ); 

現在,當我運行的第二個項目,它啓動,但是當我嘗試訪問控制器(/ API /空/家庭)我得到一個消息

「無類型發現控制器名稱空匹配」

我試圖從第一個項目到Web項目複製CustomController類,它的工作完美。但是當我將它移回到dll項目時,又得到了同樣的錯誤。

我試圖改變配置文件中的IAssembliesResolver服務,事情是,該dll被加載,不知道爲什麼它沒有看到控制器雖然。 有什麼想法在這裏可能會出錯?

+0

@IlyaChumakov不認爲這是一個重複的,這個問題是MVC與.net核心,而我即將與舊的.NET Framework(非核心)的WebAPI,也是一個問題是關於在外部類訪問路線,在我的情況下,外部類不包含路由,但繼承它的類不分配給路由。 –

+0

我的錯,對不起。 –

+0

FYI:我無法重現此錯誤。從另一個DLL繼承控制器工作只是最新的'Microsoft.AspNet.WebApi「版本=」 5.2.3'罰款。創建兩個乾淨的項目並進行測試可能會有所幫助,以確保錯誤在您身邊重複。 –

回答

0

的問題似乎是因爲在DLL和Web應用程序項目不同的軟件包版本的情況發生,web應用程序中使用的是舊版本,由於模板,而DLL下載最新版本。在更新兩個項目以使用相同的版本後,其工作沒有問題。

相關問題