Server.Transfer不会更新所有路径

时间:2012-05-18 06:22:42

标签: asp.net server.transfer

使用Server.Transfer显示一个页面,通知用户该网站处于维护模式 在global.asax:

void Application_BeginRequest(object sender, EventArgs e)
{
    if (Request.IsLocal)
        return;

    if (ConfigurationManager.AppSettings["MaintenanceMode"] == "true")
    {
        if (Request.AcceptTypes != null && Request.AcceptTypes[0] == "text/html")
            Server.Transfer("~/UserMessage.aspx?Maintenance");
    }
}  

除了查看页面源代码外,我看到CSS路径已经更新但图像的路径没有更新。 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我会在应用程序根目录中使用app_offline.htm,或者至少Response.Redirect如果我是你,Server.Transfer不会更改HTTP地址,所以你必须小心重定向所有资产到底层页面或使所有地址绝对

答案 1 :(得分:0)

server.transfer实际上是停止执行页面并开始执行另一个页面,即您提供的页面。

结果是用户在同一个网址下看到了不同的页面。

这与图像路径无关。此外,图像不会从asp.net传递,除非您已设置偶数图像以从asp.net处理传递。另外,对于您提供给我们的代码,如果它们是图像,则不进行任何转移,但是您检查text/html

现在,如果您已将执行移至其他css,则图像路径不会更改,只会更改用户看到的页面。

也许你的意思是你使用MapPath()并且根据新目录没有改变?