在运行时更改方法代码

时间:2013-12-12 16:27:49

标签: c# asp.net

我想在运行时使用我的应用程序的源代码。通过文本框提交代码并显示结果

2 个答案:

答案 0 :(得分:1)

我的建议:

运行时的代码无法编辑!

特别是当您运行代码并且客户端正在使用该服务时。您只能自己编辑代码。客户端仅使用if else块语句。

您可以编辑代码,并为其添加一些if else块,以便每次用户加载页面时;由于那些if else块,代码似乎有所改变!

但你不能让用户编辑它。它不太安全!

你要求它:

但是,你仍然可以让他们编辑页面,因为这(因为你提到了asp.net

// create some variables
var DataToWrite = /* suppose this as the main variable; having others in it */;
var dataFile = Server.MapPath("~/folder/file.txt"); // find the file
File.WriteAllText(@dataFile, userData); // write the lines to the file
result = "Information saved."; // show the result if any..

你也可以尝试其他的东西,在这里学习:http://www.asp.net/web-pages/tutorials/files,-images,-and-media/working-with-files

答案 1 :(得分:0)

您无法在运行时更改现有代码,但您可以通过the CSharpCodeProvider class访问编译器。 (请查看链接的MSDN文章中的示例。)这允许您传入字符串或文件并进行编译。将代码编译到程序集后,可以使用Reflection命名空间中的类加载,调用和运行它。通过这种方式,您可以将用户输入的代码编译并运行为单独的库。

我为没有包含一个具体的例子而道歉 - 这不是一项微不足道的任务,任何一个例子都可能非常复杂。但是,几年前我确实做过类似的事情,我可以确认它是可能的。

最后,如果您要这样做,请考虑您的环境的安全性!

允许用户输入您随后编译和运行的代码可能非常危险,因为用户可以想象编写代码来执行任何操作,例如删除数据,公开数据库结构,操作用户帐户或修改注册表。请特别注意这是如何暴露应用程序以及提供哪些库。