asp.net mvc 동적 컴 파일 생 성 컨트롤 러 방법
3946 단어 asp.netmvcController
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 <br>
<a href='/home/creat'> TestController</a><br>
<a href='/Test/'> TestController</a><br>
<a href='/Test/WithView'> 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(" :" + "<br>");
foreach (CompilerError error in compiler.Errors)
{
sb.Append(error.ErrorText + "<br>");
}
#endregion
return Content(sb.ToString());
}
/// <summary>
///
/// </summary>
/// <param name="csPath"> </param>
/// <param name="dllName"> dll </param>
/// <returns> </returns>
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;
}
}
}
절 차 는 다음 과 같다.화면 음악 이 시 작 될 때 홈 컨트롤 러 만 TestController 에 접근 하면 404 오류 가 발생 합 니 다.
그리고 동적 컴 파일 TestController 를 누 르 면 dll 을 빈 디 렉 터 리 로 생 성 합 니 다.TestController 를 다시 클릭 하면 접근 할 수 있 는 상태 입 니 다.
이 과정 에서 뮤 직 비디오 프로그램 은 자동 으로 재 개 됩 니 다.우리 의 설정 은 배경 에서 만 사용 되 기 때문에 dll 을 동적 으로 불 러 올 필요 가 없다 고 생각 합 니 다.그 가 자동 으로 다시 시작 하면 됩 니 다.그렇게 생각 하 는 게 맞 는 지 모 르 겠 어 요.큰 손 으로 가르침 을 주 십시오.
코드 다운로드:dynamic-Controller_jb51.rar
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
작업 중 문제 해결 - (win 2003 asp. net) Session 과 페이지 전송 방법 으로 해결 방안 을 정상적으로 사용 할 수 없습니다.또한 F 는 처음에 우리 의 BP & IT 프로젝트 팀 이 Forms 폼 검증 을 사용 했다 고 판단 할 수 있 습 니 다. 페이지 를 뛰 어 넘 는 것 은http://hr.bingjun.cc/MyTask/MyTas...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.