2010-02-02 90 views
0

我已经在我的应用程序中实现了表单提交页面的验证码,根据代码我从获得了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)

回答

0

用这两个文件创建一个标准的类库项目。添加所需的引用(MVC ...)以使其编译。将编译后的dll作为参考添加到您的主Web应用程序中。

+0

是的,我这样做了,但我也必须在Windsor注册我的外部控制器。 – Scott 2010-02-02 20:10:50

+0

使用信息我发现[这里] [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

+0

糟糕,在评论中没有格式化.... – Scott 2010-02-02 20:12:57