1

我有一个可以HttpModule清理. (是的,它是经典的 ASP,尚未迁移到 .NET。)BeginRequestMyFile.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. 就像传输正在工作,但没有更新请求,这对我来说没有任何意义。

4

1 回答 1

0

看起来Request.RawUrl总是保留最初请求的值,即使在转移之后,但还有其他属性,例如Request.AppRelativeCurrentExecutionFilePathRequest.FilePath确实显示了转移的 url ,所以我改用其中一个,我可以做我想做的事现在需要。感谢所有提出建议的人。

于 2014-06-19T02:04:47.497 回答