<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        asp.net mvc 動(dòng)態(tài)編譯生成Controller的方法

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:35:24
        文檔

        asp.net mvc 動(dòng)態(tài)編譯生成Controller的方法

        asp.net mvc 動(dòng)態(tài)編譯生成Controller的方法:做網(wǎng)站后臺(tái)管理系統(tǒng)的時(shí)候,有時(shí)我們需要根據(jù)用戶的錄入配置動(dòng)態(tài)生成一些頻道,這些頻道需要用到獨(dú)立的Controller,這時(shí)就需要用到運(yùn)行時(shí)動(dòng)態(tài)編譯了。代碼如下: using System.Web.Mvc; using System.CodeDom.Compiler; using Syst
        推薦度:
        導(dǎo)讀asp.net mvc 動(dòng)態(tài)編譯生成Controller的方法:做網(wǎng)站后臺(tái)管理系統(tǒng)的時(shí)候,有時(shí)我們需要根據(jù)用戶的錄入配置動(dòng)態(tài)生成一些頻道,這些頻道需要用到獨(dú)立的Controller,這時(shí)就需要用到運(yùn)行時(shí)動(dòng)態(tài)編譯了。代碼如下: using System.Web.Mvc; using System.CodeDom.Compiler; using Syst

        做網(wǎng)站后臺(tái)管理系統(tǒng)的時(shí)候,有時(shí)我們需要根據(jù)用戶的錄入配置動(dòng)態(tài)生成一些頻道,這些頻道需要用到獨(dú)立的Controller,這時(shí)就需要用到運(yùn)行時(shí)動(dòng)態(tài)編譯了。代碼如下:

        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(@"
         這個(gè)頁(yè)面是vs生成的<br> 
         <a href='/home/creat'>點(diǎn)擊動(dòng)態(tài)編譯生成TestController</a><br>
         <a href='/Test/'>訪問(wèn)TestController</a><br>
         <a href='/Test/WithView'>測(cè)試帶View的Action</a>
         ");
         }
        
         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("編譯信息:" + "<br>"); foreach (string output in compiler.Output) { sb.Append(output + "<br>"); } sb.Append("錯(cuò)誤信息:" + "<br>"); foreach (CompilerError error in compiler.Errors) { sb.Append(error.ErrorText + "<br>"); } #endregion return Content(sb.ToString()); } /// <summary> /// 動(dòng)態(tài)編譯并執(zhí)行代碼 /// </summary> /// <param name="csPath">代碼</param> /// <param name="dllName">輸出dll的路徑</param> /// <returns>返回輸出內(nèi)容</returns> private CompilerResults CompilerFromCsPath(string dllName, params string[] csPath) { string binpath = Server.MapPath("~/bin/"); CSharpCodeProvider complier = new CSharpCodeProvider(); //設(shè)置編譯參數(shù) 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"); //是否內(nèi)存中生成輸出 paras.GenerateInMemory = false; //是否生成可執(zhí)行文件 paras.GenerateExecutable = false; paras.OutputAssembly = binpath + dllName + ".dll"; //編譯代碼 CompilerResults result = complier.CompileAssemblyFromFile(paras, csPath); return result; } } }

        流程如下:

         

        mvc啟動(dòng)的時(shí)候,只有HomeController,訪問(wèn)TestController會(huì)提示404錯(cuò)誤

         

        然后點(diǎn)擊動(dòng)態(tài)編譯TestController,生成dll到bin目錄。再點(diǎn)擊訪問(wèn)TestController的時(shí)候,就是可以訪問(wèn)的狀態(tài)了。

         

        這過(guò)程中,mvc應(yīng)用程序會(huì)自動(dòng)重啟的。因?yàn)槲覀兊呐渲脙H僅是后臺(tái)使用,我覺(jué)得沒(méi)必要再去動(dòng)態(tài)加載dll,讓他自動(dòng)重啟就行了。不知道這么想對(duì)不對(duì)。請(qǐng)大手子賜教。 

        代碼下載:dynamic-Controller_jb51.rar

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        asp.net mvc 動(dòng)態(tài)編譯生成Controller的方法

        asp.net mvc 動(dòng)態(tài)編譯生成Controller的方法:做網(wǎng)站后臺(tái)管理系統(tǒng)的時(shí)候,有時(shí)我們需要根據(jù)用戶的錄入配置動(dòng)態(tài)生成一些頻道,這些頻道需要用到獨(dú)立的Controller,這時(shí)就需要用到運(yùn)行時(shí)動(dòng)態(tài)編譯了。代碼如下: using System.Web.Mvc; using System.CodeDom.Compiler; using Syst
        推薦度:
        標(biāo)簽: 動(dòng)態(tài) mvc ASP.NET
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产成人高清亚洲| 免费人成激情视频| 亚洲精品国产啊女成拍色拍| 久草免费福利在线| 亚洲精品卡2卡3卡4卡5卡区| 国产乱妇高清无乱码免费| 久久久久亚洲精品中文字幕| h片在线播放免费高清| 亚洲一区无码中文字幕| 国产免费AV片在线观看| 亚洲a在线视频视频| 黄色网址免费观看| 亚洲精品无码专区在线| 亚洲AV无码乱码在线观看牲色| 美女视频黄.免费网址| 亚洲一区二区三区影院| 久久久久国产精品免费网站| 亚洲美女色在线欧洲美女| 性xxxxx免费视频播放| 亚洲Av永久无码精品一区二区| 亚洲AV伊人久久青青草原| 在线观看AV片永久免费| 97国免费在线视频| 美女黄频视频大全免费的| 亚洲成人高清在线观看| 国产精品亚洲片在线| 亚洲av无码成人精品区在线播放 | 好吊妞在线新免费视频| 青青操免费在线观看| 黄人成a动漫片免费网站| 亚洲中文字幕久久精品无码2021| 亚洲欧洲日产国码无码网站 | 午夜免费福利在线观看| 97av免费视频| 国产一级一毛免费黄片| 免费福利资源站在线视频| 青青视频免费在线| 国产精品jizz在线观看免费| 人人玩人人添人人澡免费| 亚洲av无码兔费综合| 久久亚洲精品成人777大小说|