asp.net-mvc – SportStore:WebUI.WindsorControllerFactory.GetC
发布时间:2020-05-24 14:40:05 所属栏目:asp.Net 来源:互联网
导读:试图通过Steve Sandersons的MVC书 – 但是在创建WindsorControllerFactory时遇到了困难.看起来该方法已从MVC1更改为MVC2.这是我在尝试编译项目时遇到的错误: ‘WebUI.WindsorControllerFactory.GetControllerInstance(System.Type:找不到合适的方法来覆盖’
|
试图通过Steve Sandersons的MVC书 – 但是在创建WindsorControllerFactory时遇到了困难.看起来该方法已从MVC1更改为MVC2.这是我在尝试编译项目时遇到的错误: ‘WebUI.WindsorControllerFactory.GetControllerInstance(System.Type:找不到合适的方法来覆盖’.任何帮助都会受到赞赏 – 我无法超越这个! 这是代码 – 从书中转录: using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Castle.Windsor;
using Castle.Windsor.Configuration.Interpreters;
using Castle.Core.Resource;
using System.Reflection;
using Castle.Core;
using Castle.MicroKernel;
namespace WebUI
{
public class WindsorControllerFactory : DefaultControllerFactory
{
WindsorContainer container;
// The constructor:
// 1. Sets up a new IoC container
// 2. Registers all components specified in web.config
// 3. Registers all controller types as components
public WindsorControllerFactory()
{
// Instantiate a container,taking configuration from web.config
container = new WindsorContainer(
new XmlInterpreter(new ConfigResource("castle"))
);
// Also register all the controller types as transient
var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
where typeof(IController).IsAssignableFrom(t)
select t;
foreach (Type t in controllerTypes)
container.AddComponentWithLifestyle(t.FullName,t,LifestyleType.Transient);
}
// Constructs the controller instance needed to service each request
protected override IController GetControllerInstance(Type controllerType)
{
return (IController)container.Resolve(controllerType);
}
}
}
解决方法由于有关竞争条件的不幸错误,GetControllerInstance已从ASP.NET MVC 1.0更改为ASP.NET MVC 2.ASP.NET MVC 1.0中的签名是: protected virtual IController GetControllerInstance(
Type controllerType);
在ASP.NET MVC 2中它是: protected virtual IController GetControllerInstance(
RequestContext requestContext,Type controllerType)
对于这种特殊情况,您似乎只需要将方法的签名更改为: protected override IController GetControllerInstance(
RequestContext requestContext,Type controllerType)
{
return (IController)container.Resolve(controllerType);
}
潜在的竞争条件是RequestContext实例可以由多个同时请求共享,这将是一个主要的禁忌.幸运的是,似乎没有任何用户遇到过这个问题,但无论如何它在ASP.NET MVC 2中得到了修复. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net结合Ajax验证用户名是否存在的代码
- ASP.NET缓存的方法和最佳实践
- asp.net-mvc-3 – 什么是MVC 3中的ModelState类?
- asp.net – 如何将JsonResult对象作为字符串获取,以便我可以
- asp.net – 如何监视SQL Server中的活动连接池?
- 在asp.net中RequiredFieldValidator Text和ErrorMessage有什
- asp.net-web-api – asp.net webapi 2属性路由不工作
- asp.net-mvc – 什么时候应该在asp.net mvc中使用部分视图?
- 在ASP.NET中下载文件的实现代码
- asp.net-mvc – HttpContext.Items与ASP.NET MVC
推荐文章
站长推荐
- asp.net – @ Html.EditorForModel()下拉列表
- asp.net – 需要安装Dnx Runtime软件包 有关详细
- ASP.NET MVC全能路由
- asp.net-core – 如何在Entity Framework Core中
- asp.net-mvc – ASP.NET MVC将表单值传递给actio
- asp.net-mvc – 自定义网站的Orchard
- asp.net – 选择性地将CSS应用于gridview中的一行
- asp.net-mvc – 使用ValueInjecter在具有不同属性
- ASP.NET MVC图像上传存储位置(db vs filesystem)
- asp.net-mvc – 使用ASP.NET MVC剃刀的自定义控件
热点阅读
