关于vs2015 MvcContrib 多项目 无法找到资源 解决办法

来源:互联网 发布:服务网络占用硬盘 编辑:程序博客网 时间:2024/06/02 04:30

按照MvcContrib方式搭建了主/子项目,访问子项目url出现”无法找到资源”

MvcContrib方式请参考:
http://www.cnblogs.com/dingji/archive/2012/06/10/2544255.html

于是断点在:

public class MyDemoAreaRegistration : PortableAreaRegistration{    public override string AreaName    {        get        {            return "MyDemo";        }    }    public override void RegisterArea(AreaRegistrationContext context, IApplicationBus bus)    {        //断点处,此处方法是继承PortableAreaRegistration类的        //...........    }}

运行发现代码并没有停在继承的方法处,说明继承的东西有问题,

既然是继承的东西有问题,那么我们来找一找被继承的PortableAreaRegistration类所定义的方法为什么没有被触发,

鼠标移上去,可见此类完全限定名为:MvcContrib.PortableAreas.PortableAreaRegistration

既然子项目引用了MvcContrib.dll,那么是不是主项目引用的MvcContrib.dll不一致呢?

展开主项目发现压根没有引用MvcContrib.dll,那么问题究竟出在哪里呢?

来到PortableAreaRegistration定义处,发现其继承了AreaRegistration类,

鼠标放到AreaRegistration上,可见完全限定名为:System.Web.Mvc.AreaRegistration

也就是说AreaRegistration类来自System.Web.Mvc.dll,此时恍然大悟,

查看主项目和子项目的System.Web.Mvc.dll,发现版本不一致,因此导致了主/子项目使用的dll不一致,

所以,子项目继承的类也不是同一个类,那么被继承的方法当然也就不会被触发咯

总结调用层次结构:

Global.asax.MvcApplication : System.Web.HttpApplication{    protected void Application_Start()    {        System.Web.Mvc.AreaRegistration.RegisterAllAreas();//此处System.Web.Mvc.AreaRegistration被public abstract class PortableAreaRegistration继承        WebApiConfig.Register(GlobalConfiguration.Configuration);        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);        RouteConfig.RegisterRoutes(RouteTable.Routes);    }}public abstract class MvcContrib.PortableAreas.PortableAreaRegistration : System.Web.Mvc.AreaRegistration{    public override void RegisterArea(AreaRegistrationContext context);//重写父类的方法}public class MyDemoAreaRegistration : MvcContrib.PortableAreas.PortableAreaRegistration{    public override string AreaName    {        get        {            return "MyDemo";        }    }    public override void RegisterArea(AreaRegistrationContext context, IApplicationBus bus)    {        //再次重写父类方法    }}

解决办法:更换子项目的System.Web.Mvc.dll使其和主项目System.Web.Mvc.dll的版本一致即可。

阅读全文
0 0
原创粉丝点击