.net – 404控制器在外部组件
我在Asp.Net MVC 4项目中无法解决404回复.它内置VS2012定位4.5.
我已经将预编译的视图和控制器内置到独立的DLL中.我可以动态加载DLL并从我的核心项目中检查,甚至调用它们的方法;然而,似乎MVC框架不知道控制器.我在这附近,但有些东西丢了. 控制器和视图背景 控制器内置在独立的MVC项目中,并由Controller继承.没有什么太有趣的那里.这些意见使用RazorGenerator并成为项目中的类. 项目的输出是一个正确包含控制器和视图的DLL. DLL实现一个特定的接口,我们将它称为IPlugin,在一个单独的类(不是控制器的一部分)在库中. 加载DLL 在Visual Studio中作为管理员运行我编译我的应用程序,它是托管在IIS下.随着项目的建立,我将一个插件DLL放入我的“插件”目录.没有调试(这将变得很重要),我打开IE并导航到该网站.请注意,此时应用程序已经构建,但从未运行,因此启动事件将触发.如果我回收应用程序池,这里的所有内容仍然是一致的. 我有一个启动类有两个方法,PreStart和PostStart,并分别使用WebActivator.PreApplicationStartMethod和WebActivator.PostApplicationStartMethod调用方法. PreStart是我执行以下操作的地方: >获取我的“插件”目录中的所有插件DLL的列表 >将程序集添加到BuildManager 在’PostStart’中,我做这个代码(基于RazorGenerator.Mvc的代码): foreach (var assembly in Modules.Select(m=>m.Value)) { var engine = new PrecompiledMvcEngine(assembly) { UsePhysicalViewsIfNewer = HttpContext.Current.Request.IsLocal }; ViewEngines.Engines.Insert(0,engine); VirtualPathFactoryManager.RegisterVirtualPathFactory(engine); } 此上下文中的模块是键/值对,其中值是加载的程序集.此代码的目的是确保MVC通过为知道如何解析视图(这是RazorGenerator的一部分)的每个程序集添加视图引擎来了解视图. 我怎么知道我很近(但显然没有雪茄) IPlugin定义了一种名为RegisterRoutes的方法,您猜测它将为实现该接口的用户注册路由.我在PreStart中调用此方法,并添加路由 – 我已经验证了这些存在于我的路由表中.例如,在我的插件中定义的路线上,通过在PreStart中动态调用该方法创建,在检查我的路由时,我会看到像这样的DataToken: Namespaces = Plugin.Name.Controllers 所以,路由被注册,程序集被加载,我已经验证了DLL被正确复制到AppDomain的DynamicDirectory.我可以调用在运行时动态加载的类的成员.但是当我导航到路由匹配的URL时,我得到一个404.这不是一个“找不到视图”的YSOD,更类似于没有找到控制器. 这是混淆我的部分:如果在这一点上,没有任何事情,我回到Visual Studio,并点击F5 …一切正常. 就像Visual Studio以某种方式意识到控制器,我无法识别,而且MVC框架正在上升. 最后一个问题 我缺少什么,如何让MVC框架知道我的控制器? 嘿,在这一点上,如果你还在读这个,谢谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – 默认启用UnsafeHeaderParsing是否可以接受?
- [ASP NET MVC] 表单 Partial View / Editor Template 使用抉
- 使用匿名函数减少重复代码
- asp.net webservice处理gzip压缩请求
- asp.net-mvc – 带可选参数的MVC路由
- ASP.NET Development Server未更新对标记/代码的更改
- ASP.NET Core / MVC 6 ViewModel中的依赖注入(DI)
- asp.net – 无法获得typeahead.js基本示例
- asp.net-mvc – 如何在ASP.NET MVC中使用编译的全局资源
- asp.net-mvc – 生成的视图中的模型值错误
- ASP.NET web.config文件是否失控?
- asp.net-mvc – 可以为多个部署转换MVC视图,例如
- ASP.Net AJAX多页面加载功能可能吗?
- ASP.NET AJAX:在页面加载完成后触发UpdatePanel
- asp.net – Windows Azure缓存预览
- asp.net-mvc – 如何将我的对象保存回LINQ to SQ
- asp.net 3.5升级到4.0 IIS6 ReturnURL问题
- asp.net – DataBinding:’System.Data.DataRow
- asp.net core 实现一个简单的仓储的方法
- entity-framework – 将DbContext注入FluentVali