using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Net; using System.IO; namespace SampleIIS { // Sample IIS class class SampleIIS { public void StartIIS() { string url = "http://localhost:8080/"; string vm_ID = string.Empty; HttpListener httpListener = new HttpListener(); httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous; httpListener.Prefixes.Add(url); // 1. Start Server System.Console.WriteLine("[{1}] [system] Start Server, Port {0} \r\n", url, DateTime.Now.ToLongTimeString()); httpListener.Start(); new Thread(new ThreadStart(delegate { while (true) { // 2. Wating commad System.Console.WriteLine("[{0}] [system] Wating commad ..... \r\n ", DateTime.Now.ToLongTimeString()); HttpListenerContext httpListenerContext = httpListener.GetContext(); // 3. Receive request/ do something/ create VM // ceate VM and get vm_ID vm_ID = string.Format("VM_ID:XiaoChen-123456-{0}-{1}", DateTime.Now.ToString("yyyyMMddhhmmss"), DateTime.Now.Millisecond); System.Console.WriteLine("[{0}] [Remote] Receive request. ", DateTime.Now.ToLongTimeString()); System.Console.WriteLine("[{0}] [Remote] Receive privillige, working...", DateTime.Now.ToLongTimeString()); System.Console.WriteLine("[{0}] [Remote] {1} create successfully !", DateTime.Now.ToLongTimeString(), vm_ID); // 4. Respone header / contents httpListenerContext.Response.StatusCode = 200; httpListenerContext.Response.Headers.Add(vm_ID); // Header, Key-Value 隨意加 httpListenerContext.Response.ContentType = "text/plain"; using (StreamWriter writer = new StreamWriter(httpListenerContext.Response.OutputStream)) { // response as xml writer.WriteLine("<?xml version=\"1.0\">"); writer.WriteLine("<niaoyun>"); writer.WriteLine(" <result>{0}</result>", vm_ID); writer.WriteLine(" <message>Success</message>"); writer.WriteLine(" <version>V1.0</version>"); writer.WriteLine(" <time>{0}</time>", DateTime.Now.ToString("yyyyMMddhhmmss")); writer.WriteLine("</niaoyun>"); } // 5. Ending System.Console.WriteLine("[{0}] [Remote] Completed!\r\n ", DateTime.Now.ToLongTimeString()); } })).Start(); } } class Program { static void Main(string[] args) { SampleIIS siis = new SampleIIS(); siis.StartIIS(); } } }