加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:35:22 所属栏目:asp.Net 来源:网络整理
导读:我有以下示例页面结构: 网页.aspx Script.aspx 如果我从Webpage.aspx调用Server.Execute(“Script.aspx”),我如何在Script.aspx中检测到它是从Webpage.aspx调用而不是直接从Web浏览器调用的? 我已经尝试检查Referrer但这似乎只返回域而不是脚本. 我在.NET
我有以下示例页面结构:

>网页.aspx
> Script.aspx

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

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

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

解决方法

在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将始终生成当前执行的脚本,因此比较两者将得到所需的结果.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读