去掉通用事件头

我们知道,很难严格区分静态网页和动态网页,因为动态生成的网页,也需要使用不少静态的文件,例如图片、js、css等等。

所以我们总是在HtttpRequest事件的开始位置加上代码:

'通用事件头,用于发送已经存在的常见文件
Dim
fl As String = "d:\web\" & e.path
If
filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".html",".htm",".zip",".rar"
            e.WriteFile(fl)
            Return
'
这里必须返回
    End
Select

End
If
'以下是动态生成网页的代码
'...

这有点繁琐,实际上这个事件头可以去掉的,只需将启动服务的代码改为:

HttpServer.Prefixes.Add("http://*/")
HttpServer
.WebPath = "d:\web"  '指定静态文件存储位置
HttpServer
.Start()

现在HtttpRequest不需要任何代码, 当用户访问某个文件时,系统会自动判断"d:\web"目录是否存在此文件,如果存在,则自动发送此文件,否则触发HttpRequet事件。

我们只用了3行代码,这应该是史上最简单的web服务搭建方法了。

从现在开始,我们的HttpRequest事件代码将不再包括通用事件头了,我们假定你已经使用上述代码启动了Web服务。

关于后缀名

如果给HttpServer设置了WebPath属性,在默认情况下,系统会发送该目录下以下类型的文件:
.jpg
.gif
.png
.bmp
.wmf
.js
.css
.html
.htm
.zip
.rar
.txt
.json
.svg
.ttf
.woff
.woff2
.eot
.ico
.map
.doc
.docx
.xls
.xlsx

HttpServer还有一个Extensions属性,这是一个集合,用于管理可发送文件的后缀名,我们可以根据需要添加删除后缀名,例如:

HttpServer.Prefixes.Add("http://*/")
HttpServer
.WebPath = "d:\web"
HttpServer
.Extensions.Remove(".doc")
HttpServer
.Extensions.Remove(".docx")
HttpServer
.Extensions.add(".table")
HttpServer
.Start()

提示:代码中的后缀名必须是小写,且必须以符号"."开头。


本页地址:http://www.foxtable.com/mobilehelp/topics/0276.htm