asp.net-mvc - ServiceStack Funq IoC 替换

标签 asp.net-mvc servicestack

在 AppHost 类中,所有方法重写都使用 Funq 容器。我在 ASP.NET MVC 应用程序中使用 Autofac(我与 MVC 应用程序并行运行 SS)。

  1. 有没有一种方法可以使用 global.asax.cs 中的 Autofac 注册,或者替换它是否太过分了?
  2. 我在AppHost中注释掉了这一行

    //ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));

因为它弄乱了我的 Autofac 供电 Controller 。这是否足以防止 Autofac 和 Funq 在我的应用程序中出现问题?或者 Funq 是否将自己设置为其他地方的默认 DependencyResolver

最佳答案

Func 和 AutoFac 可以一起工作。使用 ServiceStack,您可以指示 func 使用 AutoFac 适配器。本页告诉您如何使用不同的 IoC 容器。它甚至提供了 AutofacIocAdapter 类的代码。 https://github.com/ServiceStack/ServiceStack/wiki/The-IoC-container

public class AutofacIocAdapter : IContainerAdapter
{
    private readonly IContainer _container;

    public AutofacIocAdapter(IContainer container)
    {
        _container = container;
    }

    public T Resolve<T>()
    {
        return _container.Resolve<T>();
    }

    public T TryResolve<T>()
    {
        T result;

        if (_container.TryResolve<T>(out result))
        {
            return result;
        }

        return default(T);
    }
}

然后在 AppHost 配置(Container 容器)方法中,您需要启用此适配器:

//Create Autofac builder
var builder = new ContainerBuilder();
//Now register all depedencies to your custom IoC container
//...

//Register Autofac IoC container adapter, so ServiceStack can use it
IContainerAdapter adapter = new AutofacIocAdapter(builder.Build())
container.Adapter = adapter;

关于asp.net-mvc - ServiceStack Funq IoC 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329940/

相关文章:

javascript - ASP.NET MVC 5 表单提交最佳实践

azure - Azure 上的 ServiceStack.Redis 超时

markdown - 如何在 Razor View 中呈现数据库中的 Markdown 文本?

c# - ServiceStack:RestService 中的异常未记录在 catch 子句中

authentication - 如何使用 ServiceStack 进行基于 token 的身份验证

c# - Linq 扩展表达式

asp.net-mvc - 管道中何时进行路由?

c# - 从多个位置创建脚本包

javascript - 上传文件时显示加载图标

asp.net - 重定向到操作不适用于 ASP.NET core