Plugins 如何制作可插拔架构ASP.NET5/MVC6?

Plugins 如何制作可插拔架构ASP.NET5/MVC6?,plugins,module,asp.net-core-mvc,asp.net-mvc-areas,pluggable,Plugins,Module,Asp.net Core Mvc,Asp.net Mvc Areas,Pluggable,我想构建一个web应用程序(ASP.NET MVC 6),它可以添加模块/插件,而无需重写源代码 已经阅读了有关MEF和区域的内容,但没有多大帮助 有人克服了这个问题,可以帮助我吗?取决于您针对的是web应用程序的哪个部分 1.如果它在请求管道中,您将制作一个包 2.在HTML中,你可以制作一个标记帮助程序包 3.如果它是一个内在的功能,你可以扩展适当的类并将它们放入一个包中。这方面的一个例子是有助于扩展方法或添加给定索赔主体的索赔的方法 4.如果您想更进一步,可以使用Visual Studio

我想构建一个web应用程序(ASP.NET MVC 6),它可以添加模块/插件,而无需重写源代码

已经阅读了有关MEF和区域的内容,但没有多大帮助


有人克服了这个问题,可以帮助我吗?

取决于您针对的是web应用程序的哪个部分

1.如果它在请求管道中,您将制作一个包

2.在HTML中,你可以制作一个标记帮助程序包

3.如果它是一个内在的功能,你可以扩展适当的类并将它们放入一个包中。这方面的一个例子是有助于扩展方法或添加给定索赔主体的索赔的方法


4.如果您想更进一步,可以使用Visual Studio模板,在创建时可以使用这些模板预先填充选项

我在VisualStudio解决方案中开发了MVC6WebAPI,在另一个vs解决方案中开发了类库。在这个库中,我创建了一个控制器,并试图在WebAPI中访问它。我已经在web api中引用了类库,但是当我运行类库时,我无法访问库控制器。我建议将该控制器的逻辑用作服务。使用另一个库中的控制器不是正确的方法,尽管如果另一个控制器从控制器继承,并且您配置了正确的路由,它应该可以工作。视图会给您带来问题,因为MVC默认情况下会查看视图文件夹中的视图。我认为我已配置了正确的路由,因为我还在visual studio解决方案中的web api所在位置创建了一个类库,并且工作正常,我可以访问该库的控制器。如果我将以下代码添加到Startup.cs,我可以访问外部控制器:`services.AddMvc().AddControllersAsServices(new[]{typeof(ClassLibrary2.glintController).GetTypeInfo().Assembly,});`GlintController是我的外部控制器。但是如果我添加这段代码,我将无法再访问web api的控制器。