首页 新闻 会员 周边 捐助

WebApi中将控制器Controller放到类库中,与WebApi分开,再引用,无法找到控制器

0
悬赏园豆:20 [已解决问题] 解决于 2015-07-21 19:42

新建了一个WebApi项目WebApiHost和一个类库WebApi,将一个Controller放到类库WebApi中:

public class HomeController: ApiController
    {
        public string GetHome()
        {
            return "Home";
        }
    }

 

然后在WebApiHost中,引用WebApi。部署iis,物理路径映射到WebApiHost,此时访问User控制器,显示找不到名称为Home的Controller:

凿壁偷光的主页 凿壁偷光 | 初学一级 | 园豆:175
提问于:2015-07-17 14:42
< >
分享
最佳答案
0

DefaultControllerFactory defaultControllerFactory = new DefaultControllerFactory(new CustomControllerActivator.NinjectControllerActivator()); ControllerBuilder.Current.SetControllerFactory(defaultControllerFactory);

你需要写类似这样的代码,要不然它从自己的dll中找controller注册,你新添加的dll根本就用不上,

收获园豆:20
幻天芒 | 高人七级 |园豆:37207 | 2015-07-17 18:50

不是,我单纯用的WebApi,没有用Mvc,使用Mvc是没有问题的。

凿壁偷光 | 园豆:175 (初学一级) | 2015-07-21 10:46

@凿壁偷光: WebApi的类库应该也是需要注册的。http://www.cnblogs.com/artech/p/custom-assembly-resolver.html

幻天芒 | 园豆:37207 (高人七级) | 2015-07-21 16:37

@幻天芒: 已经找到问题,我用的是Web Host寄宿模式,不需要注册,但是引用类库引用的System.Web.Http与Web Host项目引用的不是同一个版本。

凿壁偷光 | 园豆:175 (初学一级) | 2015-07-21 19:42

@凿壁偷光: 额,解决了就好。。

幻天芒 | 园豆:37207 (高人七级) | 2015-07-21 19:43

@凿壁偷光: 是怎么解决的、、我用的是Web Host寄宿模式,不需要注册,但是引用类库引用的System.Web.Http与Web Host项目引用的不是同一个版本。

无所不帅 | 园豆:204 (菜鸟二级) | 2016-04-12 13:42
其他回答(2)
0

我也 遇到这个问题、、想知道怎么解决

无所不帅 | 园豆:204 (菜鸟二级) | 2016-04-12 13:45

右键查看WebApi和Web Host中引用的System.Web.Http,看下他们是不是同一个版本的,如果不是,改成引用同一个版本的就可以了。

支持(0) 反对(0) 凿壁偷光 | 园豆:175 (初学一级) | 2016-04-14 09:29
0

兄弟,能分享一个demo么...最近也在研究这个 来学习学习 O(∩_∩)O哈哈哈~

7tiny | 园豆:156 (初学一级) | 2017-01-31 15:40

就是我在一个控制台写宿主,网上demo都是在同一个控制台项目里面写控制器,我想单独一个类库专门放控制器,怎么能把类库里的控制器用上啊

支持(0) 反对(0) 7tiny | 园豆:156 (初学一级) | 2017-01-31 15:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册