技术分享

金山云 > 云计算 > 解答HTTP服务器中遇到的问题

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

发布时间: 2020-01-17 18:01:02


在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服务器中遇到的问题的相关问题您可以点击页面中的链接进行具体了解。金山云提供云服务器,云主机,云存储,私有云,数据库,物理主机,RDS,KS3,SLB,KEC的全套产品服务,部分产品可以免费体验,而且会有定期的优惠、代金券等相关的活动。成立7年来,金山云始终坚持以客户为中心的服务理念,提供安全、可靠、稳定、高品质的云计算服务。以上是对解答HTTP服务器中遇到的问题相关介绍,如果觉得对您有帮助可以收藏。欢迎随时查看。

以上就是金山云为您带来的云计算的全部内容,如果还想了解更多内容可访问金山云官网www.ksyun.com了解其它资讯。
*免责声明:部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。