Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 404-翁布拉科+;温莎城堡_C#_Umbraco_Castle Windsor - Fatal编程技术网

C# 404-翁布拉科+;温莎城堡

C# 404-翁布拉科+;温莎城堡,c#,umbraco,castle-windsor,C#,Umbraco,Castle Windsor,使用Umbraco 7.1.8和Castle Windsor 3.3.0在每次请求时获得404。对使用Umbraco相当陌生,还没有为IoC设置它,但是温莎对我来说并不陌生 控制器本身似乎是从容器中解析的,并且容器本身注册了正确的(非umbraco)控制器 我错过了什么?谁能给我指一下正确的方向吗 干杯 public class Global : UmbracoApplication { private static IWindsorContainer container;

使用Umbraco 7.1.8和Castle Windsor 3.3.0在每次请求时获得404。对使用Umbraco相当陌生,还没有为IoC设置它,但是温莎对我来说并不陌生

控制器本身似乎是从容器中解析的,并且容器本身注册了正确的(非umbraco)控制器

我错过了什么?谁能给我指一下正确的方向吗

干杯

public class Global : UmbracoApplication
{

    private static IWindsorContainer container;

    protected override void OnApplicationStarting(object sender, EventArgs e)
    {
        base.OnApplicationStarting(sender, e);

        container = new WindsorContainer().Install(FromAssembly.This());

        UmbracoFilteredControllerFactory.Kernel = container.Kernel;

        FilteredControllerFactoriesResolver.Current.InsertType<UmbracoFilteredControllerFactory>(0);

    }
过滤工厂

public class UmbracoFilteredControllerFactory : WindsorControllerFactory, IFilteredControllerFactory
{

    private static IKernel _kernel;

     public UmbracoFilteredControllerFactory()
        : base(_kernel)
    {
    }

    public static IKernel Kernel
    {
        get
        {
            if (_kernel == null)
            {
                throw new ArgumentNullException("Set Kernel in WindsorControllerFactory.");
            }
            return _kernel;
        }
        set
        {
            _kernel = value;
        }
    }

    public bool CanHandle(RequestContext request)
    {
        var controllerType = GetControllerType(request, request.RouteData.Values["controller"].ToString());

        return Kernel.HasComponent(controllerType);
    }
}

谷歌透露了这一点,希望能有所帮助:@sebastiaan谢谢,我之前看到过,不幸的是——到目前为止,我还无法得到这个球。使用Ninject实现了类似的功能,并且只使用了依赖项解析器——正如答案所暗示的那样——但是如果可能的话,我宁愿使用ControllerFactory。
public class UmbracoFilteredControllerFactory : WindsorControllerFactory, IFilteredControllerFactory
{

    private static IKernel _kernel;

     public UmbracoFilteredControllerFactory()
        : base(_kernel)
    {
    }

    public static IKernel Kernel
    {
        get
        {
            if (_kernel == null)
            {
                throw new ArgumentNullException("Set Kernel in WindsorControllerFactory.");
            }
            return _kernel;
        }
        set
        {
            _kernel = value;
        }
    }

    public bool CanHandle(RequestContext request)
    {
        var controllerType = GetControllerType(request, request.RouteData.Values["controller"].ToString());

        return Kernel.HasComponent(controllerType);
    }
}