Blog Details

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

shopify独立站

Planning your online business goals with a specials

Kristin Weswoo

Aug 30, 2023

 基于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 了。   以上就是小编的今日分享,希望对您有所辅助。  

快速解决DNS服务器未响应的四个小妙招

Random Image 608
Random Image 608

Manage your online banking

Morbi lorem proin morbi tempor risus. Nisl lobortis diam id faucibus pretium vitae suspendisse sed accumsan. Sodales morbi tristique elit cursus gravida. Ullamcorper commodo eget pulvinar pretium. Condimentum rhoncus commodo amet nec auctor nibh vel mi blandit.

Neque ultrices nunc condimentum morbi risus tincidunt. Vel arcu lacus non ornare. Porttitor in rhoncus magna augue adipiscing.

  • Manage your time so you’ll get more done in less time
  • Cut expenses without sacrificing quality
  • Attract and retain quality, high-paying customers

开始您的独立站品牌出海

独立站品牌从0到1的步骤:产品开发 - VI定调 - 网站定制 - 运营自动化 - 客户维护

  • 12小时技术团队支持

  • 全方位品牌出海护航