相关疑难解决方法(0)

ASP.NET - AppDomain.CurrentDomain.GetAssemblies() - AppDomain重新启动后丢失的程序集

我有一个Bootstrapper,它可以查看ASP.NET MVC应用程序中的所有程序集,找到实现IBootstrapperTask接口的类型,然后使用IOC Contrainer注册它们.我们的想法是,您可以随意将您的IBootstrapperTasks放置在任何地方,并按您喜欢的方式组织您的项目.

Bootstrapper代码:

public class Bootstrapper
{
    static Bootstrapper()
    {
        Type bootStrapperType = typeof(IBootstrapperTask);

        IList<Assembly> assemblies = AppDomain.CurrentDomain.GetAssemblies();

        List<Type> tasks = new List<Type>();

        foreach (Assembly assembly in assemblies)
        {
            var types = from t in assembly.GetTypes()
                        where bootStrapperType.IsAssignableFrom(t)
                            && !t.IsInterface && !t.IsAbstract
                        select t;

            tasks.AddRange(types);
        }

        foreach (Type task in tasks)
        {
            if (!IocHelper.Container().Kernel.HasComponent(task.FullName))
            {
                IocHelper.Container().AddComponentLifeStyle(
                    task.FullName, task, LifestyleType.Transient);
            }
        }
    }

    public static void Run()
    {
        // Get all registered IBootstrapperTasks, call Execute() method
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# asp.net reflection asp.net-mvc assemblies

30
推荐指数
1
解决办法
1万
查看次数

在Ninject中的所有程序集中加载模块

我的项目中有几个类库,并且都在使用NinjectIoC容器.我想StandardKernel在任何地方一次性加载所有模块INinjectModule.所以我用过:

var kernel = new StandardKernel();
kernel.Load(AppDomain.CurrentDomain.GetAssemblies())
Run Code Online (Sandbox Code Playgroud)

但由于某些原因,这不起作用.有人可以帮忙吗?

c# asp.net ninject

14
推荐指数
1
解决办法
1万
查看次数

Autofac随机无参数公共构造函数.错误

我有一个MVC/WebApi应用程序.我开始使用Autofac来解决这个问题.

Autofac工作.但是,随机我会收到错误:

尝试创建"SomeController"类型的控制器时发生错误.确保控制器具有无参数的公共构造函数.

当我清理解决方案并重建时.没有更多的错误.我以为这是我的Visual Studio实例(可能需要运行修复).但是,我只是尝试发布到IIS,我再次收到错误.

有没有人遇到过这个问题,能有人帮帮我吗?

这是一些代码细节:

我所有的注册都是在这样的模块中完成的:

public class CryptographyModule :  Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterType<AesCryptographyService>()
            .As<IAesCryptographyService>()
            .InstancePerRequest();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用它来引导Autofac:

public static class Bootstrapper
{
    public static void Run()
    {
        BootStrapAutofac();
    }

    private static void BootStrapAutofac()
    {
        var builder = new ContainerBuilder();
        var localAssemblies = GetLocalAssemblies();
        builder.RegisterApiControllers(localAssemblies);
        builder.RegisterControllers(localAssemblies);
        builder.RegisterAssemblyModules(localAssemblies);


        //build container
        var container = builder.Build();
        var webApiResolver = new AutofacWebApiDependencyResolver(container);
        GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

        var mvcResolver = new AutofacDependencyResolver(container);
        DependencyResolver.SetResolver(mvcResolver);

    }

    private static Assembly[] GetLocalAssemblies() …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc dependency-injection autofac asp.net-web-api

3
推荐指数
1
解决办法
8874
查看次数