当由“内部”ASPX调用时,Response.Redirect失败

时间:2009-11-20 17:05:31

标签: c# asp.net response.redirect

我有一个ASPX(PictureGetter.aspx)加载图像并以这样的方式将它们写入响应:

private void WritePicture()
{
    byte[] bytes = GetBytes(picPath);
    Response.ContentType = "image/jpeg";
    Response.Clear();
    Response.BinaryWrite(bytes);
    Response.End();
}

然后可以在这样的页面上使用它:

<img src="/path/to/PictureGetter.aspx?some_param=some_value" />

但是,对于某些情况,我将无法获取图片,因此我想将用户重定向到完全不同的页面:

if (some_condition)
{
    Response.Redirect("/another/path/page.aspx");
}
else
{
    WritePicture();
}

但是,重定向永远不会发生。我已经尝试过Response.Redirect(“/ another / path / page.aspx”,false)和Response.Redirect(“/ another / path / page.aspx”,true),但无济于事。我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您发送重定向的请求不是针对该页面,而是针对该图像。除非进入的请求是针对实际页面的,否则您将无法从服务器发送重定向。

更具体一点:如果您需要根据某些条件进行重定向,则应在请求托管图像的页面时执行此操作。如果你真的需要按照你的方式进行(不知道你是否需要重定向,直到尝试图像加载),你将不得不使用一些凌乱的客户端javascript。