小编Sco*_*ite的帖子

IoC Castle Windsor - 没有为此对象定义的无参数构造函数

当使用Castle Windsor通过(DI/IoC)模式相应地注册控制器及其依赖关系时,我在控制器上获得了"为此对象定义的无参数构造函数".有人可以看看下面的内容,看看我的错误,因为我看不到它.

在此输入图像描述

在global.asax上注册的代码

public class MyApplication : System.Web.HttpApplication
{ 
    public MvcApplication()
    {
        this.container = new WindsorContainer().Install(new DependencyInstaller());
    }
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator),
        new WindsorActivator(this.container));
    }
}
Run Code Online (Sandbox Code Playgroud)

我的DI

public class DependencyInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(
            Component.For<IDatabaseFactory>().ImplementedBy<DatabaseFactory>().LifeStyle.PerWebRequest,
            Component.For<IUnitOfWork>().ImplementedBy<UnitOfWork>().LifeStyle.PerWebRequest,
            Component.For<IMappingEngine>().ImplementedBy<MappingEngine>().UsingFactoryMethod(() => Mapper.Engine).LifeStyle.Singleton,
            Component.For<IFirmTasks>().ImplementedBy<FirmTasks>().LifeStyle.PerWebRequest,
            Classes.FromAssemblyContaining<PersonController>().BasedOn<IController>().LifestyleTransient(),
            Classes.FromThisAssembly().BasedOn<IHttpController>().LifestyleTransient(),
            Classes.FromAssemblyNamed("Core.Firm.Tasks").Where(type => type.Name.EndsWith("Tasks")).WithServiceAllInterfaces().LifestylePerWebRequest(),
            Classes.FromAssemblyNamed("Core.Firm.Repository")
                .Where(type => type.Name.EndsWith("Repository")).WithServiceAllInterfaces().LifestylePerWebRequest()
            );
    }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器

public class PersonController : Controller
{
    private IFirmTasks tasks;

    public PersonController(IFirmTasks tasks)
    {
        this.tasks …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc castle-windsor ioc-container inversion-of-control

6
推荐指数
1
解决办法
3313
查看次数

找不到WCF服务引用命名空间

我在我的解决方案中有一个本地WCF服务,我引用了它.但是我的控制器类无法获取Service命名空间?传统上我会使用svcUtil来编写一个包装类但是因为这是内部的我虽然我可以简单地添加"服务引用",然后点击命名空间然后简单地调用我的服务(即var service = new QServiceReference.MyClass();)

我无法显示图片,所以这里是我解决方案的结构,

Solution  
-> Services Folder
    -> QService Folder
       QService Project  
-> Web Folder
    -> Zipporah.Queuing.Web (project)
       -> Services References
          -> QServiceReference
       -> Controllers Folder
          -> KioskProcessController
Run Code Online (Sandbox Code Playgroud)

我的类(KioskProcessController)如下:

using System.Web.Mvc;

using Zipporah.Queuing.Web.QServiceReference; (ITS THIS NAMESPACE REFERENCE THAT DOES NOT WORK)

namespace Zipporah.Queuing.Web.Controllers
{
    public class KioskProcessController : ZipController
    {
        public ActionResult Index()
        {
            return View();
        }

        public ViewResult Queue()
        {
            return View();
        }

        public ViewResult PreAppointment()
        {
            return View();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对不起,如果那个结构不清楚(如上所述我不能发布图片)

任何线索或想法都会受到最高的赞赏?

c# wcf namespaces wcf-client service-reference

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