千家信息网

asp.net mvc如何动态编译生成Controller

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了asp.net mvc如何动态编译生成Controller,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。做网站后台管
千家信息网最后更新 2026年11月01日asp.net mvc如何动态编译生成Controller

这篇文章主要介绍了asp.net mvc如何动态编译生成Controller,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

做网站后台管理系统的时候,有时我们需要根据用户的录入配置动态生成一些频道,这些频道需要用到独立的Controller,这时就需要用到运行时动态编译了。代码如下:

using System.Web.Mvc;using System.CodeDom.Compiler;using System.Text;using Microsoft.CSharp;namespace DynamicCompiler.Controllers{  public class HomeController : Controller  {    // GET: Home    public ContentResult Index()    {      return Content(@"              这个页面是vs生成的
点击动态编译生成TestController
访问TestController
测试带View的Action "); } public ContentResult Creat() { string cspath = Server.MapPath("~/TestController.cs"); var compiler = CompilerFromCsPath("TestController", cspath); //编译 #region 输出编译信息 StringBuilder sb = new StringBuilder(); sb.Append("cs文件路径:" + cspath); sb.Append("编译信息:" + "
"); foreach (string output in compiler.Output) { sb.Append(output + "
"); } sb.Append("错误信息:" + "
"); foreach (CompilerError error in compiler.Errors) { sb.Append(error.ErrorText + "
"); } #endregion return Content(sb.ToString()); } /// /// 动态编译并执行代码 /// /// 代码 /// 输出dll的路径 /// 返回输出内容 private CompilerResults CompilerFromCsPath(string dllName, params string[] csPath) { string binpath = Server.MapPath("~/bin/"); CSharpCodeProvider complier = new CSharpCodeProvider(); //设置编译参数 CompilerParameters paras = new CompilerParameters(); //引入第三方dll paras.ReferencedAssemblies.Add("System.dll"); paras.ReferencedAssemblies.Add("System.linq.dll"); paras.ReferencedAssemblies.Add("System.Web.dll"); paras.ReferencedAssemblies.Add(binpath + "System.Web.Mvc.dll"); //是否内存中生成输出 paras.GenerateInMemory = false; //是否生成可执行文件 paras.GenerateExecutable = false; paras.OutputAssembly = binpath + dllName + ".dll"; //编译代码 CompilerResults result = complier.CompileAssemblyFromFile(paras, csPath); return result; } }}

流程如下:

mvc启动的时候,只有HomeController,访问TestController会提示404错误

然后点击动态编译TestController,生成dll到bin目录。。再点击访问TestController的时候,就是可以访问的状态了。

感谢你能够认真阅读完这篇文章,希望小编分享的"asp.net mvc如何动态编译生成Controller"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

编译 动态 生成 代码 篇文章 输出 信息 时候 频道 文件 路径 错误 价值 兴趣 内存 内容 参数 只有 同时 后台 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 金诺互联网科技 中国 科技 互联网 美国互联网科技 致骋互联网科技 小马过河互联网科技 衡水科技产业互联网平台 农村开互联网科技讲堂 西藏七维空间互联网科技有限公司 以后互联网后是啥科技 银川新华互联网科技职业技术培训学校图片 互联网科技创新服务 乌苏新华互联网科技做什么的 企晟互联网信息科技有限公司 科技赋能视角下互联网保险发展 滨湖区互联网智能科技产品有哪些 众安科技工业互联网合作 信承诺互联网科技有限公司 互联网科技创业有什么好项目 每日互联网科技新闻 互联网科技园 科技互联网产品 互联网金融公司科技 互联网 的科技创新 山东吉时兔互联网科技有限公司 湖南洣水互联网科技有限公司扣款 受益于互联网科技的高速发展 工业互联网山东科技大学 互联网科技数字货币 上海乐五互联网科技有限公司
0