C# 执行js
原文链接:https://www.cnblogs.com/Ehtan/p/4361986.html#undefined
添加COM引用: Microsoft Script Control 1.0
1、添加帮助类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | using MSScriptControl; using System; using System.IO; namespace Javascript { /// <summary> /// JavascriptHelper /// </summary> public class JavascriptHelper { /// <summary> /// ScriptControl /// </summary> private ScriptControl jsControl = null ; /// <summary> /// 构造方法 /// </summary> public JavascriptHelper() { this .jsControl = new ScriptControl(); this .jsControl.UseSafeSubset = true ; this .jsControl.Language = "JScript" ; } /// <summary> /// 添加js文件 /// </summary> /// <param name="filePath">js文件路径</param> public void AddJavaScriptFile( string filePath) { if (!File.Exists(filePath)) { throw new Exception( "文件" + filePath + "不存在。" ); } string jsCode = File.ReadAllText(filePath); this .jsControl.AddCode(jsCode); } /// <summary> /// 添加js代码 /// </summary> /// <param name="jsCode">js代码</param> public void AddJavascriptCode( string jsCode) { this .jsControl.AddCode(jsCode); } /// <summary> /// 执行js /// </summary> /// <param name="method">方法名</param> /// <returns>结果</returns> public dynamic Excecute( string method) { return this .jsControl.Eval(method); } } } |
2、测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | using System; using System.IO; namespace Javascript { public class Program { public static void Main( string [] args) { string plantext = "123456" ; string ciphertext = Rsa(plantext); Console.WriteLine(ciphertext); Console.ReadLine(); } /// <summary> /// rsa加密算法 /// </summary> /// <param name="plantext">明文</param> /// <returns>密文</returns> private static string Rsa( string plantext) { JavascriptHelper jsHelper = new JavascriptHelper(); AddJSFile(jsHelper); string method = string .Format( "encrypt('{0}');" , plantext); string ciphertext = jsHelper.Excecute(method).ToString(); return ciphertext; } /// <summary> /// 添加js文件 /// </summary> /// <param name="jsHelper">JavascriptHelper</param> private static void AddJSFile(JavascriptHelper jsHelper) { string path = string .Empty; path = AppDomain.CurrentDomain.BaseDirectory + @"js\security.js" ; jsHelper.AddJavaScriptFile(path); path = AppDomain.CurrentDomain.BaseDirectory + @"js\rsa.js" ; jsHelper.AddJavaScriptFile(path); } } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步