2017-04-16 26 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下载最新版本。在更新两个项目以使用相同的版本后,其工作没有问题。

相关问题