在之前的项目中升级了MVC的DLL导致一开始程序运行时走的controller的有参构造方法变为走无参构造方法,但是该controller没有无参的构造方法,为了强制让程序走有参的构造方法,就在global文件的Application_Start()方法中写入了如下代码

 IControllerFactory factory = new CustomControllerFactory();
ControllerBuilder.Current.SetControllerFactory(factory);

其中

CustomControllerFactory 代码如下:

  public class CustomControllerFactory:IControllerFactory
{
public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName)
{
DataSettings setting = new DataSettings();
var controller = new HomeController(setting);
return controller;
}
public System.Web.SessionState.SessionStateBehavior GetControllerSessionBehavior(
System.Web.Routing.RequestContext requestContext, string controllerName)
{
return SessionStateBehavior.Default;
}
public void ReleaseController(IController controller)
{
IDisposable disposable = controller as IDisposable;
if (disposable != null)
disposable.Dispose();
}
}
}

这样当时是强制程序走home的有参方法,home有几个参数,就传入几个参数,但是问题来了,如果你在程序中并不想让程序一开始就走home,比如我的程序要先走个激活的controller然后再走home,那么就算你使用了redirect去跳转到激活的 AuthorizeController,,他还是会去走home,不会去调到你指定的controller,但是后来发现不走有参的controller是因为引用升级的原因,全部系统的DLL升级后问题消失了,这段代码就没有存在的意义了,实际上,创建一个普通的类,继承IController后,上面的代码可以变动成

var controller = new Testt();
其中
Testt就是新建的类。简单的归纳一下,还希望大家补充IController,IControllerFactory,。以及程序中出现不走有参构造函数的时候如何强制去执行的建议

最新文章

  1. Centos6.5 配置Nginx开机自启动
  2. js 多选 反选
  3. java的字体的颜色,型号,大小的方法
  4. springmvc入门基础之注解和参数传递
  5. atitit.j2ee 1.5 1.6 的不同跟 Servlet 3.0新特性总结
  6. How to disable and clear query ranges in sysquery form
  7. ARC 没有自动释放内存
  8. 算法系列6《MAC》
  9. 高仿百度传课应用客户端源码iOS版
  10. nagios二次开发(五岁以下儿童)---nagios和nagiosql关系
  11. HDU-1994-利息计算
  12. isNAN()的使用
  13. javascript中用setAttribute给元素添加colspan属性无效
  14. [转]usdt omnicore testnet 测试网络
  15. 【进阶1-1期】理解JavaScript 中的执行上下文和执行栈(转)
  16. css学习_div+css布局
  17. Big Event in HDU (母函数, 玄学AC)
  18. GC收集器种类
  19. visual studio code 编辑器的配置及快捷键等, vscode, csc
  20. postgresql----INSERT

热门文章

  1. delete ELK index
  2. Device eth0 does not seem to be present, delaying initialization: Linux Networking
  3. js input复选框选中父级同时子级也选中
  4. php rtrim的一个坑,很“二”的问题
  5. Windows屏幕模糊,图片打开慢等解决方案
  6. 查看Python支持的.whl文件版本
  7. PHP文件上传error的错误类型 - $_FILES['file']['error']
  8. Express中404页面
  9. C#:新邮件监听及搜索
  10. 牛客网Java刷题知识点之匿名对象、匿名对象的内存结构图、匿名对象的应用场景、匿名对象的使用、匿名对象的简单例子、匿名对象要注意的事项