我有一个可以HttpModule
清理. (是的,它是经典的 ASP,尚未迁移到 .NET。)BeginRequest
MyFile.asp
/my-file.asp
代码如下所示:
'if not an asp file, skip it
If Not Request.Path.EndsWith(".asp") Then Return
'if the physical file exists, bail out, to let that file service the request
If ("~" & Request.RawUrl).ToServerFileObject.Exists Then Return
'if a dehyphenated version of the file exists
If ("~" & Request.RawUrl.RemoveHyphens).ToServerFileObject.Exists Then
'transfer to that file
application.Server.TransferRequest("~" & Request.RawUrl.RemoveHyphens, True)
Return
End If
当我运行它和 requestmyfile.asp
时,代码会看到该文件存在于磁盘上,然后返回,并且 IIS 使用它来为请求提供服务。当我请求时my-file.asp
,我希望它会看到该文件不存在,然后看到该文件myfile.asp
确实存在于磁盘上,然后传输到它。
但是相反,这个处理程序只是不断地被调用,并且每次Request.RawUrl
都设置为my-file.asp
. 就像传输正在工作,但没有更新请求,这对我来说没有任何意义。