当前位置:  开发笔记 > 后端 > 正文

如何检测是否从Server.Execute调用了aspx页面?

如何解决《如何检测是否从Server.Execute调用了aspx页面?》经验,为你挑选了2个好方法。

我有以下示例页面结构:

Webpage.aspx

Script.aspx

如果我Server.Execute("Script.aspx")从Webpage.aspx 调用,我如何在Script.aspx中检测到它是从Webpage.aspx调用而不是直接从Web浏览器调用的?

我已经尝试检查Referrer但这似乎只返回域而不是脚本.

我在.NET 3.5上使用ASP.NET Web Forms



1> stevemegson..:

由于Server.Execute运行与原始页面具有相同上下文的新页面,因此Request的所有属性仍应反映对Webpage.aspx的原始请求(CurrentExecutionFilePath除外,它希望包含"/Script.aspx").Request.Path应包含"/Webpage.aspx",而Request.Url将在需要查看域或查询字符串时提供完整的Uri对象.

您还可以在调用Server.Execute之前向Context.Items添加值,并在Script.aspx中读取它们



2> Snickers..:

在Script.aspx.cs中,您可以简单地检查Request.Path与当前执行路径的比较.

if ( Request.CurrentExecutionFilePath == Request.Path ) 
{
   //This has been called from a web browser
} else {
   //This has been executed from the file Request.Path
}

为什么?

当您调用Server.Execute时,请求的一部分将不受影响地传递.因此,如果您在使用Webpage.aspx.cs中的Server.Execute后从Script.aspx.cs查看Request.Path的值,您将看到它的值为"/Webpage.aspx".

但是,如果Web浏览器直接访问Script.aspx,则Script.aspx.cs中的Request.Path值将生成"/Script.aspx".currentExecutionPath将始终生成当前执行的脚本,因此比较两者将得到所需的结果.

希望这可以帮助.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有