响应式网页设计、开放源代码、永久使用、不限域名、不限使用次数

2024年网站建设打开文件(4篇)

网站建设打开文件 第1篇

多亏了园友的提点,使用了ApplicationHost类,使得宿主程序能够处理请求。后来上网搜了一下,原来就是写一个的宿主程序。上MSDN看了一下还不怎么明白,终究还是找了一些博文来看才明白。

ApplicationHost属于命名空间,要使用这个类要添加引用。先上一点代码再解释吧

ApplicationHost通过调用CreateApplication方法构造一个Object的实例,这个实例实际上是AspxCreator类型的,CreateApplication方法有三个参数,第一个是AspxCreater的Type类型的对象,第二个是虚拟目录,一般是”/”,第三个是物理路径,这个参数跟配置在IIS配置网站是一样的。当初不明白的就是第一个参数,那个Type究竟是什么东西?其实它是一个自定义的类而已,不过这个类是继承MarshalByRefObject这个类的,通过aspx生成html的方法就定义在AspxCreater里面。还是看看AspxCreator的定义吧

整个类就定义了AspxCreator就只定义了一个方法,而在这个方法里,核心的就是这两行

把一个aspx页面转成html,其余的都是流的操作。这里考虑到内容里头有中文就会造成乱码,就继承了一下SimpleWorkerRequest这个类,把里面的方法重写一下,改成UTF8的编码。使得伟大的中国方体字能正确的在浏览器中显示。

在浏览器发了一个请求时,利用之前构造的_aspxHost实例,调用CreateAspxPage方法,把相关的aspx页面转成html,通过byte[]返回回来,传到浏览器中去

结果如下图

生成成功之后,要在程序所在的目录下新建一个bin文件夹,把程序的一个副本放到bin文件夹里,这样程序才能正常运行。这样就可让aspx页面脱离IIS运行了。

网站建设打开文件 第2篇

我之前也说过我这个Web服务器的速度要比IIS的慢,也有园友指出我的线程没处理好,对象构造了过多,但以我现时的水平我看不出有什么对象可以削减的。我最近也查阅过有关GC的文章和一些.NET性能优化的文章。其实找到要更改的地方不多,而且本人认为响应慢的原因是我的连接池的效率问题,故找问题都在连接池里找。

最后只找到了这个地方:在接收成功绑定的方法里头,每接收完一次数据之后,我都会调用两个方法

作用分别是释放缓冲区和设置缓冲区,方法的内部机制是先清空缓冲区的数据,把缓冲区的偏移量放入空闲栈中供下次调用,然后马上又从栈把空闲的缓冲区取出来(方法的定义在在Socket连接池一文中有源码,本文底端也有源码),这样的方法不是不好,但在这里调用先得不合适,反正都是继续用回那个缓冲区,干脆直接把缓冲区的内容清空了就可以了。

然后就调用了这个方法,不知是否这里的原因,经测试这个Web服务的速度不会比IIS慢一截了,有时还比IIS快。经过本地访问的测试和局域网内测试的结果图

网站建设打开文件 第3篇

这个问题是后来自己发现的。在发送请求的URL中,如果带有中文字符的时候,一律会自动转码的,转成一串又有百分号又有字母的字符串。如果服务器单纯用正则提取了请求的URL,不对其解码的话,后果不用我说都知道了吧,之前一直没考虑这方面的问题。

想改也不难,一行代码即可,调用类的UrlDecode方法,就可以得到正常的中文字符了。在虚拟目录下的确有个 “我.htm”的文件

这里有几对编码/解码的方法。

UrlDecode和UrlEncode,用于URL的解码和编码

HtmlDecode和HtmlEncode用于对Html的解码和编码

而对于js,只有编码一个方法

网站建设打开文件 第4篇

之前对信号量和各种实现互斥的方法不是太理解,某些地方使用互斥体和信号量没什么作用。现在更改过来了。

在开启服务和停止服务,一个服务开启了不能再开启的,要关闭了之后才能开启,所以这里我认为应该使用信号量才对。

此外,异步发送数据在发送成功之前不能再次发送别的数据,否则会抛异常,由于之前的程序在这个地方没有处理好,导致服务器在运行过程中会不稳定。但是如果这里用了信号量的话会导致整个服务器的数据发送只能以排着队逐条发送的形式进行发送,延长了响应时间,于是考虑使用Monitor。

可是这回真发现这个服务器的性能与IIS有天渊之别了,在浏览器输入一个URL之后狂按F5,IIS的响应很快的,可我这个服务器的响应这个这堆请求显得力不从心,提高性能的办法还没想到,不过在这里同时也发现了另一个问题。

猜你喜欢