| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using ServerLib;
- using System.IO;
- using System.Threading;
- using Newtonsoft.Json.Linq;
- using SLua;
- namespace GameLogic
- {
- public class BattleServer : ServerLib.HttpServer
- {
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="ipAddress">IP地址</param>
- /// <param name="port">端口号</param>
- public BattleServer(string ipAddress, int port)
- : base(ipAddress, port)
- {
- }
- public override void OnPost(HttpRequest request, HttpResponse response)
- {
- // 获取客户端传递的参数
- // string data = request.Params == null ? "" : string.Join(";", request.Params.Select(x => x.Key + "=" + x.Value).ToArray());
- Log("url->" + request.URL);
- if (request.URL.Equals("/fight/reqstartbattle"))
- {
- LuaState luaState = new LuaState();
- try
- {
- // LuaSvrObject luaSvrObject = LuaManager.getInstance().getOneSvr();
- // luaSvrObject.isWorking = true;
- // Log("----------->" + luaSvrObject.no);
- // Log("----------->" + luaSvrObject.svr.luaState.isMainThread());
- // // string req = "{\"fightUuid\":\"9cb05ebd-30b8-492f-9946-77571473d88f\",\"mode\":11,\"stage_id\":102057,\"run_speed\":0,\"seed\":1544248913,\"is_auto_skill\":true,\"is_replay\":false,\"left\":[{\"uuid\":\"33569706-4a1b-4472-9b91-78b2203f2958\",\"cfgid\":1001312,\"tid\":1,\"level\":80,\"quality\":5,\"power\":21287.0,\"attr_info\":{\"CRIT\":0.2,\"ATK\":2911.0,\"DEF\":665.0,\"HP\":27558.0,\"MIMU\":0.06,\"Dodge\":45.0,\"Speed\":6.0,\"POWER\":21287.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"Force\":21287.0,\"Decreases\":50.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":101312101,\"level\":1}],\"3\":[{\"cfgid\":101312201,\"level\":2},{\"cfgid\":101312301,\"level\":1},{\"cfgid\":101312401,\"level\":1}]}},{\"uuid\":\"1bbbd3d2-4bda-4233-a774-bacec4a2e368\",\"cfgid\":1004309,\"tid\":2,\"level\":80,\"quality\":5,\"power\":16203.0,\"attr_info\":{\"CRIT\":0.17,\"ATK\":2296.0,\"DEF\":414.0,\"HP\":22069.0,\"Dodge\":30.0,\"Speed\":5.0,\"POWER\":16203.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":16203.0,\"Decreases\":50.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":104309101,\"level\":1}],\"3\":[{\"cfgid\":104309201,\"level\":2},{\"cfgid\":104309301,\"level\":1},{\"cfgid\":104309401,\"level\":1}]}},{\"uuid\":\"d43aba8e-4a43-49bc-9a76-e69912931347\",\"cfgid\":1004201,\"tid\":3,\"level\":80,\"quality\":5,\"power\":9455.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":1309.0,\"DEF\":234.0,\"HP\":15743.0,\"Dodge\":4.0,\"POWER\":9455.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":9455.0,\"Decreases\":50.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":104201101,\"level\":2}],\"3\":[{\"cfgid\":104201201,\"level\":2},{\"cfgid\":104201301,\"level\":1}]}},{\"uuid\":\"71a935b6-8d77-4e6a-8118-7d9f3c6c5124\",\"cfgid\":1003201,\"tid\":4,\"level\":80,\"quality\":3,\"power\":13639.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":1758.0,\"DEF\":541.0,\"HP\":17206.0,\"Hit\":96.0,\"PIMU\":0.09,\"Dodge\":15.0,\"SeCure\":50.0,\"Speed\":2.0,\"POWER\":13639.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"MIMU\":0.0,\"Force\":13639.0,\"Decreases\":50.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":103201101,\"level\":2}],\"3\":[{\"cfgid\":103201201,\"level\":2},{\"cfgid\":103201301,\"level\":1}]}}],\"right\":[{\"uuid\":null,\"cfgid\":1001201,\"tid\":11,\"level\":11,\"quality\":3,\"power\":1222.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":101.0,\"DEF\":23.0,\"HP\":1852.0,\"POWER\":1222.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":1222.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":101201101,\"level\":1}],\"3\":[{\"cfgid\":101201201,\"level\":1}]}},{\"uuid\":null,\"cfgid\":1001203,\"tid\":12,\"level\":11,\"quality\":3,\"power\":1223.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":114.0,\"DEF\":21.0,\"HP\":1646.0,\"POWER\":1223.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":1223.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":101203101,\"level\":1}],\"3\":[{\"cfgid\":101203201,\"level\":1}]}},{\"uuid\":null,\"cfgid\":1002202,\"tid\":13,\"level\":11,\"quality\":3,\"power\":1226.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":114.0,\"DEF\":21.0,\"HP\":1675.0,\"POWER\":1226.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":1226.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":102202101,\"level\":1}],\"3\":[{\"cfgid\":102202201,\"level\":1}]}},{\"uuid\":null,\"cfgid\":1003202,\"tid\":14,\"level\":11,\"quality\":3,\"power\":1223.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":135.0,\"DEF\":20.0,\"HP\":1293.0,\"POWER\":1223.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":1223.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":103202101,\"level\":1}],\"3\":[{\"cfgid\":103202201,\"level\":1}]}},{\"uuid\":null,\"cfgid\":1004201,\"tid\":15,\"level\":11,\"quality\":5,\"power\":2158.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":257.0,\"DEF\":45.0,\"HP\":3129.0,\"POWER\":2158.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":2158.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":104201101,\"level\":1}],\"3\":[{\"cfgid\":104201201,\"level\":1}]}}],\"version\":0,\"max_time\":90,\"operation_list\":[],\"extdata\":{\"garland\":{\"left\":1,\"right\":1},\"relic_id_list\":{\"left\":{\"1\":0},\"right\":{\"1\":0}},\"team_hpmp\":{\"left\":{\"hp_r\":1.0,\"mp_r\":0.0},\"right\":{\"hp_r\":1.0,\"mp_r\":0.0}},\"hero_hpmp\":{\"\":{\"hp_r\":1.0,\"mp_r\":0.0}},\"result\":0,\"difficulty_level\":0,\"stage_dynamic_difficulty\":0,\"real_config\":null,\"common\":{}}}";
- // string req = request.Params.ToString();
- // luaSvrObject.svr.luaState.getFunction("serverBattleStart").call(req);
- // luaSvrObject.svr.luaState.getFunction("serverBattleEnd").call();
- // Object result = luaSvrObject.svr.luaState.getFunction("getBattleResult").call();
- // luaSvrObject.isWorking = false;
- // while (LuaState.main != null)
- // {
- // Log("----------->wait!!");
- // }
- // svr.start("battle/server.lua");
- luaState.doFile("battle/server.lua");
- string req = request.Params.ToString();
- // Log("----------->" + Thread.CurrentThread.ManagedThreadId.ToString());
- // Log("----------->" + (LuaState.main == null));
- // string req = "{\"fightUuid\":\"9cb05ebd-30b8-492f-9946-77571473d88f\",\"mode\":11,\"stage_id\":102057,\"run_speed\":0,\"seed\":1544248913,\"is_auto_skill\":true,\"is_replay\":false,\"left\":[{\"uuid\":\"33569706-4a1b-4472-9b91-78b2203f2958\",\"cfgid\":1001312,\"tid\":1,\"level\":80,\"quality\":5,\"power\":21287.0,\"attr_info\":{\"CRIT\":0.2,\"ATK\":2911.0,\"DEF\":665.0,\"HP\":27558.0,\"MIMU\":0.06,\"Dodge\":45.0,\"Speed\":6.0,\"POWER\":21287.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"Force\":21287.0,\"Decreases\":50.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":101312101,\"level\":1}],\"3\":[{\"cfgid\":101312201,\"level\":2},{\"cfgid\":101312301,\"level\":1},{\"cfgid\":101312401,\"level\":1}]}},{\"uuid\":\"1bbbd3d2-4bda-4233-a774-bacec4a2e368\",\"cfgid\":1004309,\"tid\":2,\"level\":80,\"quality\":5,\"power\":16203.0,\"attr_info\":{\"CRIT\":0.17,\"ATK\":2296.0,\"DEF\":414.0,\"HP\":22069.0,\"Dodge\":30.0,\"Speed\":5.0,\"POWER\":16203.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":16203.0,\"Decreases\":50.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":104309101,\"level\":1}],\"3\":[{\"cfgid\":104309201,\"level\":2},{\"cfgid\":104309301,\"level\":1},{\"cfgid\":104309401,\"level\":1}]}},{\"uuid\":\"d43aba8e-4a43-49bc-9a76-e69912931347\",\"cfgid\":1004201,\"tid\":3,\"level\":80,\"quality\":5,\"power\":9455.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":1309.0,\"DEF\":234.0,\"HP\":15743.0,\"Dodge\":4.0,\"POWER\":9455.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":9455.0,\"Decreases\":50.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":104201101,\"level\":2}],\"3\":[{\"cfgid\":104201201,\"level\":2},{\"cfgid\":104201301,\"level\":1}]}},{\"uuid\":\"71a935b6-8d77-4e6a-8118-7d9f3c6c5124\",\"cfgid\":1003201,\"tid\":4,\"level\":80,\"quality\":3,\"power\":13639.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":1758.0,\"DEF\":541.0,\"HP\":17206.0,\"Hit\":96.0,\"PIMU\":0.09,\"Dodge\":15.0,\"SeCure\":50.0,\"Speed\":2.0,\"POWER\":13639.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"MIMU\":0.0,\"Force\":13639.0,\"Decreases\":50.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":103201101,\"level\":2}],\"3\":[{\"cfgid\":103201201,\"level\":2},{\"cfgid\":103201301,\"level\":1}]}}],\"right\":[{\"uuid\":null,\"cfgid\":1001201,\"tid\":11,\"level\":11,\"quality\":3,\"power\":1222.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":101.0,\"DEF\":23.0,\"HP\":1852.0,\"POWER\":1222.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":1222.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":101201101,\"level\":1}],\"3\":[{\"cfgid\":101201201,\"level\":1}]}},{\"uuid\":null,\"cfgid\":1001203,\"tid\":12,\"level\":11,\"quality\":3,\"power\":1223.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":114.0,\"DEF\":21.0,\"HP\":1646.0,\"POWER\":1223.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":1223.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":101203101,\"level\":1}],\"3\":[{\"cfgid\":101203201,\"level\":1}]}},{\"uuid\":null,\"cfgid\":1002202,\"tid\":13,\"level\":11,\"quality\":3,\"power\":1226.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":114.0,\"DEF\":21.0,\"HP\":1675.0,\"POWER\":1226.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":1226.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":102202101,\"level\":1}],\"3\":[{\"cfgid\":102202201,\"level\":1}]}},{\"uuid\":null,\"cfgid\":1003202,\"tid\":14,\"level\":11,\"quality\":3,\"power\":1223.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":135.0,\"DEF\":20.0,\"HP\":1293.0,\"POWER\":1223.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":1223.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":103202101,\"level\":1}],\"3\":[{\"cfgid\":103202201,\"level\":1}]}},{\"uuid\":null,\"cfgid\":1004201,\"tid\":15,\"level\":11,\"quality\":5,\"power\":2158.0,\"attr_info\":{\"CRIT\":0.05,\"ATK\":257.0,\"DEF\":45.0,\"HP\":3129.0,\"POWER\":2158.0,\"DMGDeep\":0.0,\"Cure\":0.0,\"BeCure\":0.0,\"DMGReduce\":0.0,\"PIMU\":0.0,\"MIMU\":0.0,\"Force\":2158.0},\"skill_info\":{\"ultimate\":{\"cfgid\":0,\"level\":0},\"skill\":[],\"roguelike\":[],\"artifact\":[]},\"skill_list\":{\"2\":[{\"cfgid\":104201101,\"level\":1}],\"3\":[{\"cfgid\":104201201,\"level\":1}]}}],\"version\":0,\"max_time\":90,\"operation_list\":[],\"extdata\":{\"garland\":{\"left\":1,\"right\":1},\"relic_id_list\":{\"left\":{\"1\":0},\"right\":{\"1\":0}},\"team_hpmp\":{\"left\":{\"hp_r\":1.0,\"mp_r\":0.0},\"right\":{\"hp_r\":1.0,\"mp_r\":0.0}},\"hero_hpmp\":{\"\":{\"hp_r\":1.0,\"mp_r\":0.0}},\"result\":0,\"difficulty_level\":0,\"stage_dynamic_difficulty\":0,\"real_config\":null,\"common\":{}}}";
- // svr.luaState.getFunction("serverBattleStart").call(req);
- // svr.luaState.getFunction("serverBattleEnd").call();
- // Object result = svr.luaState.getFunction("getBattleResult").call();
- Object result = luaState.getFunction("callBattleResult").call(req);
- // 释放掉吧,怕复用出问题,毕竟没有找到checktop相关接口
- // svr.luaState.Close();
- string content = result.ToString();
- response.SetContent(content);
- // response.SetContent(Thread.CurrentThread.ManagedThreadId.ToString()+"-->"+DateTime.Now.ToString());
- // JObject rsp = new JObject();
- // rsp.Add(new JProperty("code", 200));
- // // rsp.Add(new JProperty("content", new JObject(new JProperty("data", content))));
- // rsp.Add(new JProperty("content", new JObject(JObject.Parse(content))));
- // response.SetContent(rsp.ToString());
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- response.SetContent("400");
- }
- luaState.Dispose();
- }
- else if (request.URL.Equals("/fight/check"))
- {
- JObject rsp = new JObject();
- rsp.Add(new JProperty("code", 200));
- rsp.Add(new JProperty("msg", "ready ok"));
- response.SetContent(rsp.ToString());
- }
- else
- {
- JObject rsp = new JObject();
- rsp.Add(new JProperty("code", 404));
- rsp.Add(new JProperty("msg", "invalid url"));
- response.SetContent(rsp.ToString());
- }
- //构造响应报文
- response.Content_Encoding = "utf-8";
- response.StatusCode = "200";
- response.Content_Type = "application/json";
- response.Headers["Server"] = "BattleServer";
- //发送响应
- response.Send();
- }
- public override void OnGet(HttpRequest request, HttpResponse response)
- {
- ///链接形式1:"http://localhost:4050/assets/styles/style.css"表示访问指定文件资源,
- ///此时读取服务器目录下的/assets/styles/style.css文件。
- ///链接形式1:"http://localhost:4050/assets/styles/"表示访问指定页面资源,
- ///此时读取服务器目录下的/assets/styles/style.index文件。
- //当文件不存在时应返回404状态码
- string requestURL = request.URL;
- requestURL = requestURL.Replace("/", @"\").Replace("\\..", "").TrimStart('\\');
- string requestFile = Path.Combine(ServerRoot, requestURL);
- //判断地址中是否存在扩展名
- string extension = Path.GetExtension(requestFile);
- //根据有无扩展名按照两种不同链接进行处
- if (extension != "")
- {
- //从文件中返回HTTP响应
- response = response.FromFile(requestFile);
- }
- else
- {
- //目录存在且不存在index页面时时列举目录
- if (Directory.Exists(requestFile) && !File.Exists(requestFile + "\\index.html"))
- {
- requestFile = Path.Combine(ServerRoot, requestFile);
- var content = ListDirectory(requestFile, requestURL);
- response = response.SetContent(content, Encoding.UTF8);
- response.Content_Type = "text/html; charset=UTF-8";
- }
- else
- {
- //加载静态HTML页面
- requestFile = Path.Combine(requestFile, "index.html");
- response = response.FromFile(requestFile);
- response.Content_Type = "text/html; charset=UTF-8";
- }
- }
- //发送HTTP响应
- response.Send();
- }
- public override void OnDefault(HttpRequest request, HttpResponse response)
- {
- response.SetContent("");
- response.Content_Encoding = "utf-8";
- response.StatusCode = "200";
- response.Content_Type = "text/html; charset=UTF-8";
- response.Headers["Server"] = "BattleServer";
- //发送响应
- response.Send();
- }
- private string ConvertPath(string[] urls)
- {
- string html = string.Empty;
- int length = ServerRoot.Length;
- foreach (var url in urls)
- {
- var s = url.StartsWith("..") ? url : url.Substring(length).TrimEnd('\\');
- html += String.Format("<li><a href=\"{0}\">{0}</a></li>", s);
- }
- return html;
- }
- private string ListDirectory(string requestDirectory, string requestURL)
- {
- //列举子目录
- var folders = requestURL.Length > 1 ? new string[] { "../" } : new string[] { };
- folders = folders.Concat(Directory.GetDirectories(requestDirectory)).ToArray();
- var foldersList = ConvertPath(folders);
- //列举文件
- var files = Directory.GetFiles(requestDirectory);
- var filesList = ConvertPath(files);
- //构造HTML
- StringBuilder builder = new StringBuilder();
- builder.Append(string.Format("<html><head><title>{0}</title></head>", requestDirectory));
- builder.Append(string.Format("<body><h1>{0}</h1><br/><ul>{1}{2}</ul></body></html>",
- requestURL, filesList, foldersList));
- return builder.ToString();
- }
- }
- }
|