新建一个类,名字为:MyControllerFactory
public class MyControllerFactory:IControllerFactory
{
private static List<Type> controllerTypes = new List<Type>();
static MyControllerFactory()
{
foreach (Assembly assembly in BuildManager.GetReferencedAssemblies())
{
foreach (Type type in assembly.GetTypes().Where(type => typeof(IController).IsAssignableFrom(type)))
{
controllerTypes.Add(type);
}
}
}
public IController CreateController(RequestContext requestContext, string controllerName)
{
string typename = controllerName + "Controller";
Type controllerType = controllerTypes.FirstOrDefault(c=>string.Compare(typename,c.Name,true)==0);
if(controllerType ==null)
{
return null;
}
return (IController)Activator.CreateInstance(controllerType);
}
public SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, string controllerName)
{
return SessionStateBehavior.Default;
}
public void ReleaseController(IController controller)
{
IDisposable disposable = controller as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
}
}
第二步
Global.asax 文件里面添加两句话
MyControllerFactory MyConFac = new MyControllerFactory();
ControllerBuilder.Current.SetControllerFactory(MyConFac);