Asp.net 服务器。传输不';不更新所有路径

Asp.net 服务器。传输不';不更新所有路径,asp.net,server.transfer,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.A

使用
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路径已更新,但图像的路径未更新之外,工作正常。

有什么建议吗?

我会在应用程序根目录中使用
app\u offline.htm
,或者至少是
响应。重定向
如果我是你,
服务器。传输
不会更改HTTP地址,因此,您必须小心地将所有资产重定向到底层页面,或将所有地址设置为绝对的
服务器。传输实际上是停止页面的执行,并开始执行另一个页面,即您提供给它的页面

结果是用户在同一url下看到不同的页面

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

现在,如果您将执行移动到不同的css,图像路径不会改变,只有用户看到的页面会改变


也许你的意思是你使用了MapPath(),而这并不是根据新的目录而改变?

不是直接的答案,但是你为什么不在web根目录中添加一个
app\u offline.htm
,包含你想要的任何内容呢。这将得到您期望的行为(除非
UserMessage.aspx
做了一些动态的事情,但这种方式不可用),您是指css中的图像路径吗?我希望不是:)
UserMessage.aspx
显示各种消息,包括处于维护模式的消息。在页面内,我使用的是单个图像,而不是css。css路径由
服务器.Transfer
命令更改,但图像的路径没有更改。我正在尝试覆盖登录过程并显示维护模式消息。该位置仍在
帐户上(login.aspx页面所在的位置),但我无法更改它,因此我尝试了
Server.Transfer
。我只更改
text/html
,否则连css都找不到。请考虑脱机使用该应用程序。html我的代码中没有使用
MapPath()
UserMessage.aspx
显示各种消息,包括处于维护模式的消息。使用
Response.Redirect
页面找不到css或图像时,尝试有点通用性。为此,我尝试了
Server.Transfer
。您是如何定义css/图像的,是否使用相对路径?我想你需要让你的资源绝对化,至少对于登录/维护页面来说,路径都是相对的。所谓绝对的,你的意思是给予全部的http://www.whatever.com
url?它可以工作,但我试图避免这种情况。不,我的意思是使用与上面完全相同的方法,这是一个绝对路径:“~/UserMessage.aspx?Maintenance”如果您使用的是
Server.Transfer
,那么页面url(不是正确的url)将用于页面资产(图像/脚本,…),如果它们使用的是相对路径不起作用,css路径得到正确更新,但图像路径保持原样(
),未找到。也许解决方案是在页面加载时从codebehind写入路径。