从外部dll扩展自定义PICONTROLLER时,找不到与控制器名称匹配的类型



我有一个带有2个项目的C#解决方案:

  1. 图书馆dll
  2. WebApp(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/empty/home(时,我会收到一条消息

"找不到与控制器名称为空的类型"

我尝试将"定制程序"类从第一个项目复制到Web项目,它运行得很好。但是当我将其移回DLL项目时,再次遇到了同样的错误。

我尝试更改配置文件中的Iassembliesresolver服务,问题是DLL已经加载了,不知道为什么它没有看到控制器。有什么想法在这里出了什么问题?

问题似乎发生在DLL和WebApp项目中的不同软件包版本,因此WebApp由于模板而使用了较旧版本,而DLL下载了最新版本。在更新两个项目以使用相同版本的情况下,它无问题。

最新更新