C# 创建精简版IIS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 创建精简版IIS相关的知识,希望对你有一定的参考价值。

 

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();
        }
    }
}

 

以上是关于C# 创建精简版IIS的主要内容,如果未能解决你的问题,请参考以下文章

C# 最有用的(自定义)代码片段是啥? [关闭]

一个精简的C#表达式执行框架Dynamic Expresso

使用 C# 的 IIS 6 中虚拟目录的应用程序名称为空

已经成安装IIS,但IIS里面没有WEB 扩展服务,

通过 C# 代码在远程机器上启动和停止 IIS [关闭]

c#代码片段快速构建代码