Aspx被重定向到自己(完全相同的URL) - 首先是状态302,然后是状态200

时间:2018-05-23 12:36:04

标签: asp.net redirect iis webforms

我正在处理Web项目(Web表单),我遇到了一个奇怪的问题:当我刷新页面时,会触发其Page_Load事件并返回状态302。重定向转到完全相同的URL,再次触发Page_Load并返回状态200。

很少有事实:

  • AutoEventWireup属性设置为false
  • 属性MasterPageFile已设置
  • 我在页面上找不到任何<img src=""><img src="#">
  • 重定向并不总是发生(假设它发生在同一个aspx的80%请求中)

如何防止此行为以及如何在每个请求中仅执行一次页面加载?重定向到完全相同的url会有什么影响?

提前Tnx!

编辑2018-05-23 16:15:我正在附加google开发工具的打印屏幕: Google dev tools

编辑2017-05-29 09:13:好的,显然这是预期的行为。 This answer指卷曲,但我认为它也回答了我的问题。这些重定向是间歇性的,由IIS引起。我的下一个问题是:如何检测这种重定向并防止重复的代码运行。在我的情况下,我正在进行一些访问日志记录,如果重定向访问特定页面,则会记录两次...

2 个答案:

答案 0 :(得分:0)

我还没有足够的回复评论,但如果您只是尝试在初始页面加载时执行某些操作,则可以放置:

if(!Page.IsPostBack)
{
     //your code
}

在您的代码中的Page_Load事件中。这只会在初始页面加载时运行,而不是在回发时运行。

答案 1 :(得分:0)

好的,我找到了解决方案。我应该提到应用程序已经托管了#34;在SharePoint上。我认为问题在于IIS只提供服务,但对特定页面一无所知。每当缓存过期或发生回收时,IIS都要求SP提供内容,当返回内容时,IIS首先响应状态&#34; 302 Found&#34;然后是状态&#34; 200&#34;。

我的解决方案是检查响应状态并在响应状态等于状态时离开事件&#34; 302找到&#34; (VB.NET代码):

If Response.StatusCode = HttpStatusCode.Found Then Return