当源URL路径包含http://时,ResponseRedirect失败

时间:2015-02-18 15:59:06

标签: asp.net url-rewriting

作为图像处理模块的一部分,我接受以下格式的网址,以便处理和缓存外部托管的图像。

http://localhost:56639/remote.axd/http://ipcache.blob.core.windows.net/source/IMG_0671.JPG?width=400&filter=comic

处理完文件后,如果我使用Response.Redirect(url, false)将服务器重定向到有效的外部缓存网址,则服务器会返回404错误响应,引用StaticFileHandler作为错误来源。

如果文件来自本地来源,例如。

http://localhost:56639/IMG_0671.JPG?width=400&filter=comic

服务器重定向到外部网址没有问题。有人可以解释原因并提供解决方案吗?

注意remote.axd除了允许本地服务器拦截外部网址之外什么都不做。我使用.axd扩展名,因为它在MVC中默认没有映射到路由。

我注意到,在查看请求路径时,http://段被替换为http:/。我不知道这是否会导致问题。

1 个答案:

答案 0 :(得分:1)

因此对StaticFileHandler的引用是线索。

在HttpModule的操作之后,处理程序正在尝试处理请求。当使用本地缓存的文件时,它会找到该文件,一切正常。由于我重定向到远程URL并具有远程源,因此处理程序找不到任何内容并抛出404异常。

使用以下方法重写后,必须暂停对请求的进一步处理。

HttpApplication.CompleteRequest