【发布时间】:2015-12-08 22:05:05
【问题描述】:
我们正在尝试将 ServiceStack 与 ASP.NET MVC 5 应用程序一起使用。
所以最终用户将使用充分利用ASP.NET MVC的网络应用程序。
我们希望发布一组 API,以便我们的旧系统可以与新系统通信。
新系统利用SimpleInjector IoC 将整个应用程序粘合在一起。
我已经安装了ServiceStack.Mvc,但无法让它工作。
我尝试点击此链接:https://github.com/ServiceStack/ServiceStack/wiki/Mvc-integration
我认为这是因为 ServiceStack 有自己的内置 IoC 与 SimpleInjector 冲突。
这是我的Application_Start
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
Bootstrap.Configure();
#region Initialize SimpleInjector
var container = new Container();
InitializeContainer(container);
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
container.RegisterMvcIntegratedFilterProvider();
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
#endregion
new AppHost().Init();
}
这是我的AppHost
public class AppHost : AppHostBase
{
public AppHost() : base("MVC 5", typeof(MyServices).Assembly) { }
public override void Configure(Container container)
{
SetConfig(new HostConfig
{
HandlerFactoryPath = "api",
});
// ControllerBuilder.Current.SetControllerFactory(
// new FunqControllerFactory(container));
}
}
[ServiceStack.Route("/hello/{Name}")]
public class Hello
{
public string Name { get; set; }
}
public class MyServices : Service
{
public object Any(Hello request)
{
return request;
}
}
我做错了什么?当我转到website.com/api 时,我只是得到一个 404 资源未找到页面。
如果可能,我想继续使用SimpleInjector,这可能吗?还是我需要在整个应用程序中采用ServiceStackIoC?
该应用程序遵循Onion Architecture 分离了很多关注点,这就是我们使用SimpleInjector 的原因,我们大量使用它的Packaging 功能。
任何帮助将不胜感激。
更新:经过更多研究,我发现可以编写一个适配器,正如此链接所解释的:https://github.com/ServiceStack/ServiceStack/wiki/The-IoC-container 但没有SimpleInjector 实现的示例,有人可以帮忙吗?
【问题讨论】:
标签: asp.net-mvc web-services servicestack ioc-container simple-injector