栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用C#HttpListener进行URL映射

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用C#HttpListener进行URL映射

没有属性,您可以获得类似的效果

HttpListener listener = new HttpListener();listener.Prefixes.Add("http://*:8080/");listener.Start();while (true){    HttpListenerContext ctx = listener.GetContext();    ThreadPool.QueueUserWorkItem((_) =>    {        string methodName = ctx.Request.Url.Segments[1].Replace("/", "");        string[] strParams = ctx.Request.Url          .Segments          .Skip(2)          .Select(s=>s.Replace("/",""))          .ToArray();        var method = this.GetType().GetMethod(methodName);        object[] @params = method.GetParameters()      .Select((p, i) => Convert.ChangeType(strParams[i], p.ParameterType))      .ToArray();        object ret = method.Invoke(this, @params);        string retstr = JsonConvert.SerializeObject(ret);    });

用法是:

http://localhost:8080/getPersonHandler/333

如果您真的想使用属性,那么

HttpListener listener = new HttpListener();listener.Prefixes.Add("http://*:8080/");listener.Start();while (true){    HttpListenerContext ctx = listener.GetContext();    ThreadPool.QueueUserWorkItem((_) =>    {        string methodName = ctx.Request.Url.Segments[1].Replace("/", "");        string[] strParams = ctx.Request.Url          .Segments          .Skip(2)          .Select(s=>s.Replace("/",""))          .ToArray();        var method = this.GetType()      .GetMethods()      .Where(mi => mi.GetCustomAttributes(true).Any(attr => attr is Mapping && ((Mapping)attr).Map == methodName))      .First();        object[] @params = method.GetParameters()      .Select((p, i) => Convert.ChangeType(strParams[i], p.ParameterType))      .ToArray();        object ret = method.Invoke(this, @params);        string retstr = JsonConvert.SerializeObject(ret);    });}

然后,您可以使用as

http://localhost:8080/Person/333
,您的定义将是

class Mapping : Attribute{    public string Map;    public Mapping(string s)    {        Map = s;    }}[Mapping("Person")]public void getPersonHandler(int id){    Console.WriteLine("<<<<" + id);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号