新建了一个WebApi项目WebApiHost和一个类库WebApi,将一个Controller放到类库WebApi中:
public class HomeController: ApiController { public string GetHome() { return "Home"; } }
然后在WebApiHost中,引用WebApi。部署iis,物理路径映射到WebApiHost,此时访问User控制器,显示找不到名称为Home的Controller:
DefaultControllerFactory defaultControllerFactory = new DefaultControllerFactory(new CustomControllerActivator.NinjectControllerActivator()); ControllerBuilder.Current.SetControllerFactory(defaultControllerFactory);
你需要写类似这样的代码,要不然它从自己的dll中找controller注册,你新添加的dll根本就用不上,
不是,我单纯用的WebApi,没有用Mvc,使用Mvc是没有问题的。
@凿壁偷光: WebApi的类库应该也是需要注册的。http://www.cnblogs.com/artech/p/custom-assembly-resolver.html
@幻天芒: 已经找到问题,我用的是Web Host寄宿模式,不需要注册,但是引用类库引用的System.Web.Http与Web Host项目引用的不是同一个版本。
@凿壁偷光: 额,解决了就好。。
@凿壁偷光: 是怎么解决的、、我用的是Web Host寄宿模式,不需要注册,但是引用类库引用的System.Web.Http与Web Host项目引用的不是同一个版本。
我也 遇到这个问题、、想知道怎么解决
右键查看WebApi和Web Host中引用的System.Web.Http,看下他们是不是同一个版本的,如果不是,改成引用同一个版本的就可以了。
兄弟,能分享一个demo么...最近也在研究这个 来学习学习 O(∩_∩)O哈哈哈~
就是我在一个控制台写宿主,网上demo都是在同一个控制台项目里面写控制器,我想单独一个类库专门放控制器,怎么能把类库里的控制器用上啊