解答HTTP服务器中遇到的问题

时间:2021-07-16 | 标签: | 作者:Q8 | 来源:网络

小提示:您能找到这篇{解答HTTP服务器中遇到的问题}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的解答HTTP服务器中遇到的问题内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

 基于HttpListener手写服务器并不是很难。这个过程中小编是基于早期写的一个Server雏形,项目名为 Kserver。接下来小编东莞问答推广就和大家说说Kserver的调用。







 
在KServer_OnRequest中处理正常的HTTP请求,在KServer_OnError中处理程序错误,通常会返回HTTP 500给客户端。这个程序启动后占用 6600 端口,然后在 Apache 配置了反向代理。但是写Cookie始终不成功。
 
我设置Host为req.Url.Host。这个在本机是不会有问题的,单独在服务器中使用80端口也不会有问题,有问题的是即便通过反向代理,获取 Headers 中 的Host值始终还是 localhost,要通过X-Forwarded-Host才可以,这个大学时好歹了解过,平时开发全部基于IIS,没有反向代理,头一回遇到。
 
接下来就是模板引擎了,不用Razor了,说真的对Razor渐渐的没啥好感了,感觉挺笨重,所以选用了DotLiquid,用Liquid做模板引擎的应用可以说是非常多了。于是扩展了String类,增加了Html模板文件渲染 Html 的方法。
 
RenderBody 是模仿 Razor 搞的个关键字,表示是子页显示内容的区域。对于字体、脚本(第三方)、图片这些静态资源,我的想法是既然不会有大的变动,就让他永久缓存在浏览器好了。其他的就是处理POST,处理Cookie 了。HttpListenerRequest 是没法获取 Form 表单的值的,只能读取 InputStream 中的值,然后自己根据键值对获取了。Cookie 是不能简单的通过键值对分割,查询值按照等号分割没关系,因为 Value 都是编码了的,不会含有等号,但是 Cookie 中是可能会有等号的,比如 Base64 编码过的值里,大部分都有。同样,获取 Cookie 的方法也木有,自己从 Header 里找吧。接下来模拟登陆成功后的跳转,用过Asp.net 的知道有个Response.Redirect不过 HttpListenerRequest 肯定是没有这个方法的,可以通过设置 Header 302 重定向就行了。
 
对于较大的页面,也许还是希望用Gzip压缩一下,需要设置 Content-Encoding 为 Gzip。我这里处理比较简单,是不管客户端的 Accept-Type 的,不过现代浏览器基本都支持了。
 
对相应内容进行压缩:
 
既然是纯 C#,没小红书达人匹配有了 WebForm 和 MVC 这类框架,分页处理也显得不简单了,从网上改造了一个 PHP 写的分页类,果然 PHP 是最好的语言。这不是取数据时的分页,而是显示时候的分页。
 
用 SimpleMDE 作为 Markdown 编辑器,,谁用谁知道,对于富文本的排版,我始终无能为力,Word 也不会用,markdown 真好用!SimpleMDE 是没有上传图片的功能,需要自己处理,不过自定义按钮官方文档中有,我只是做了写微小的工作,为按钮加个选图片和上传的事件,这需要 jQuery 和 jQuery.Form 的支持。如果你的接口是外部服务或者阿里云OSS,要记得设置跨域,不然报错,这个搞过开发的都懂得。最初版本的后台 Markdown 渲染用的 Github 上的 star 最多的那一个 Markdig,在 CentOS 7 下 mono 环境运行报错,换了 CommonMark 使用,这个在 Nuget 上能找到。最终的最终,把所有资源都打包进了资源文件,用 ILMerge 合并程序集,你的服务端就只剩下一个 EXE 了。
 
以上就是小编的今日分享,希望对您有所帮助。
 
解答HTTP服务器中遇到的问题

上一篇:简析三种常用的服务器存储设备优缺点
下一篇:解读云服务器市场变动背后的信息与风向


版权声明:以上主题为“解答HTTP服务器中遇到的问题"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
扫码咨询
    解答HTTP服务器中遇到的问题
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“解答HTTP服务器中遇到的问题”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通解答HTTP服务器中遇到的问题的相关事宜。

关键词:解答HTTP服务器中遇到的问

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:545321@QQ.com
电话:400-021-1330 | 客服QQ:545321
沪ICP备12034177号 | 沪公网安备31010702002418号