我已经在我的应用程序中实现了表单提交页面的验证码,根据代码我从获得了ASP.NET MVC框架本书。ASP.NET MVC - Captcha作为独立程序集
他在那里提示“如果你想将它变成一个可重复使用的,可分发的CAPTCHA组件......你只需将CaptchaHelper和CaptchaImageController类放入独立程序集。”
这是什么意思?
我在想,我只是创建一个新的MVC项目,控制器文件夹中有这个单一的控制器,并在助手文件夹中的助手文件。它编译得很好。
然后我将该项目包含到我的解决方案中,并在我的其他子项目(一个用于业务层,另一个用于UI)中添加了对此项目的引用。
但是当我尝试渲染页面时,视图无法渲染验证码图像。 (顺便说一句,它工作得很好,然后我把它分解成一个单独的项目。)
该视图页似乎无法找到验证码控制器。
我想我需要创建一个独立的控制器帮助...
感谢, 斯科特
错误是:
Castle.MicroKernel.ComponentNotFoundException:支持无组件服务Captcha.CaptchaImageController被发现在Castle.MicroKernel.DefaultKernel.get_Item(Type service) at Castle.Windsor.WindsorContainer.Resolve(Type service) 在WebUI.WindsorControllerFactory.GetControllerInstance(类型controllerType)在
C:\ work_aspx \ PostHealthWellness \ WebUI中\ WindsorControllerFactory.cs:在System.Web.Mvc.DefaultControllerFactory.CreateController(的RequestContext的RequestContext,字符串controllerName) 在系统48行 。 Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase的HttpContext) 在System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext的HttpContext的) 在System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext的HttpContext的) 在系统.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean & completedSynchronously)
是的,我这样做了,但我也必须在Windsor注册我的外部控制器。 – Scott 2010-02-02 20:10:50
使用信息我发现[这里] [1],我编辑我的WindsorControllerFactory.cs文件添加: //在外部程序集中注册控制器 container.Kernel.AddComponent(“ExternalResources”,typeof(Captcha.CaptchaImageController),LifestyleType 。短暂的); [1]:http://stackoverflow.com/questions/1163900/external-controllers-and-castle – Scott 2010-02-02 20:12:41
糟糕,在评论中没有格式化.... – Scott 2010-02-02 20:12:57