• This repository has been archived on 29/Sep/2022
  • Stars
    star
    357
  • Rank 118,428 (Top 3 %)
  • Language
    C#
  • Created about 8 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

一个使用C#编写的简易Web服务器

HttpServer

Build Status Sonar-HttpServer

一个使用C#编写的简易Web服务器, 目前支持:

  • 静态页面处理 😄
  • GET/POST请求 😄
  • 支持HTTPS协议 😄
  • 支持返回JSON 😟
  • 支持路由方法 😟

快速开始

HTTP服务器示例

class Program
{
    static void Main(string[] args)
    {
        ExampleServer server = new ExampleServer("0.0.0.0",4050);
        server.Start();
    }
}

GET/POST请求示例

 public override void OnPost(HttpRequest request, HttpResponse response)
 {
    //获取客户端传递的参数
    string data = request.Params == null ? "" : string.Join(";", request.Params.Select(x => x.Key + "=" + x.Value).ToArray());

    //设置返回信息
    string content = string.Format("这是通过Post方式返回的数据:{0}", data);

    //构造响应报文
    response.SetContent(content);
    response.Content_Encoding = "utf-8";
    response.StatusCode = "200";
    response.Content_Type = "text/html; charset=UTF-8";
    response.Server = "ExampleServer";

    //发送响应
    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 = LoadFromFile(response, 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 = LoadFromFile(response, requestFile);
            response.Content_Type = "text/html; charset=UTF-8";
        }
    }

    //发送HTTP响应
    response.Send();
}

More Repositories

1

Excel2Unity

一个为Unity3D编写的插件,可以快速地将Excel文件转换为JSON、CSV和XML
C#
311
star
2

hexo-tag-cloudmusic

一个为Hexo编写的网易云音乐标签插件
JavaScript
35
star
3

qinyuanpei.github.io

Personal Blog for Github Pages
HTML
26
star
4

Unity-Obj-Loader

在Unity3D中使用脚本来解析和加载.obj文件即.mtl文件的一个尝试和研究
C#
25
star
5

WallPaper

一个基于Python的Windows下的壁纸更换工具
Python
20
star
6

LightGames

个人游戏作品
Lua
12
star
7

wechat-analyse

Python
12
star
8

openai-proxy

https://openai-proxy.yuanpei.me/
Python
9
star
9

SmarkEditor

一款基于Editor.md和node-webkit的Markdown编辑器
JavaScript
9
star
10

dotnetcore-pritices

.NET Core开发练习
C#
7
star
11

Leancloud-Counter

一个基于LeanCloud的访问量统计工具
JavaScript
7
star
12

FluentGrpc.Gateway

一个基于 ASP.NET Core 终结点路由打造的扩展,可以让你像调用一个 JSON API 一样调用 gRpc。
C#
7
star
13

MetroPlayer.Core

基于C#的开源音乐播放器MetroPlayer
C#
6
star
14

VisitorMapV

Geographic Visualization Based AntV L7
JavaScript
5
star
15

DynamicSearch

Expression Tree Based Condition Builder for Entity Framework & Dapper
C#
5
star
16

zngirls

A Python script to batch download albums from https://www.nvshens.com
Python
5
star
17

SmartHome

一个使用WPF编写的类似360桌面的小工具,可以将常用的软件和文件放在上面
C#
5
star
18

Dynamic.WebApi

The attempt of Dynamic Proxy for WCF, Dynamic Service for Web Api
C#
4
star
19

ExceptionTracker

一个基于 .NET Core 和 MongoDB 的轻量级日志追踪平台
C#
4
star
20

Xml4DB

基于XML的轻量级数据库
C#
4
star
21

SimpleSocket

一个基于事件机制实现的Socket通讯框架,非常非常的简单
C#
4
star
22

JSON4DB

基于JSON的轻量级数据库
C#
3
star
23

UniTimer

一个为Unity3D编写的简单的时间管理器
C#
3
star
24

graph-relation

基于共现理论提取《半泽直树》原著小说人物关系
3
star
25

JDSpider

一个抓取来自京东(jd.com)评论数据的小爬虫
Python
2
star
26

job-analyse

2
star
27

Swashbuckle.Extension.Mvc

Extension of Swashbuckle for ASP.NET MVC4
C#
2
star
28

UniEventDispatcher

一个基于委托实现的Unity事件分发器,可以代替SendMessage使用
C#
2
star
29

douban-generator

A crawler ported from hexo-douban-plus to generate personal douban datas such as movies、books and games.
Python
2
star
30

Love2D_Snake

一个基于Love2D的贪吃蛇游戏
Lua
1
star
31

BlogScripts

一个为Hexo和CSDN生成文档目录以及导出CSDN到Hexo的小工具
Python
1
star
32

hugo-blog

Hugo Blog for https://blog.yuanpei.me
HTML
1
star
33

SignalR.Distributed

SignalR分布式 + RabbitMQ实现后台消息推送
C#
1
star
34

LHome

心怡家居项目
C#
1
star
35

MonoLauncher

一个基于Mono的.NET程序启动器,可以让.NET程序在脱离.NET环境的情况下运行
1
star