C# 当从服务器外部访问网站时,ASP.Net页面加载和控制事件触发两次
这是一个几个月来让我发疯的问题。它看起来非常复杂,所以我做了一个非常简单的例子来演示它 我有一个使用ASP.Net的网站,托管在microsoft服务器上,使用IIS和SQL server数据库。在本地服务器上调试或从服务器内部访问网站时,网站工作正常 但是,每当我从客户端使用该网站时(当它部署在远程服务器上时,从我的计算机访问它),该网站的页面似乎每次加载两次。意思是:C# 当从服务器外部访问网站时,ASP.Net页面加载和控制事件触发两次,c#,asp.net,iis,C#,Asp.net,Iis,这是一个几个月来让我发疯的问题。它看起来非常复杂,所以我做了一个非常简单的例子来演示它 我有一个使用ASP.Net的网站,托管在microsoft服务器上,使用IIS和SQL server数据库。在本地服务器上调试或从服务器内部访问网站时,网站工作正常 但是,每当我从客户端使用该网站时(当它部署在远程服务器上时,从我的计算机访问它),该网站的页面似乎每次加载两次。意思是: 在第一次加载时,页面加载事件被触发两次 每次触发runat=“server”控件时,页面加载事件和关联的服务器事件都会触发
- 在第一次加载时,页面加载事件被触发两次
- 每次触发runat=“server”控件时,页面加载事件和关联的服务器事件都会触发两次
服务器端代码:
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用System.IO;
罗莎莉
{
公共部分类TestPostback:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Directory.Exists(Server.MapPath(“Logs”))
CreateDirectory(Server.MapPath(“日志”);
StreamWriter sw=新的StreamWriter(Server.MapPath(“Logs/Trace.txt”),true);
sw.WriteLine(DateTime.Now+“”+getPostBackControlName()+“PageLoad\n”);
sw.Flush();
sw.Close();
}
受保护的无效btnTest\u单击(对象发送方,事件参数e)
{
如果(!Directory.Exists(Server.MapPath(“Logs”))
CreateDirectory(Server.MapPath(“日志”);
StreamWriter sw=新的StreamWriter(Server.MapPath(“Logs/Trace.txt”),true);
sw.WriteLine(DateTime.Now+“”+getPostBackControlName()+“ButtonEvent\n”);
sw.Flush();
sw.Close();
}
//方法返回触发回发的控件的ID
私有字符串getPostBackControlName()
{
...
}
}
如您所见,目标是在每次调用服务器事件方法时写入文件,从而跟踪服务器行为
现在,当我在本地服务器上运行此页面时,或者当我从发布服务器内部访问此页面时,我只需单击一次测试按钮,结果文件如下:
02/10/2018 15:05:44 PageLoad
02/10/2018 15:05:46 btnTest PageLoad
02/10/2018 15:05:46 btnTest ButtonEvent
你可以看到页面被加载,然后我点击按钮触发了回发,并触发了相关事件。对于这个网页来说,这是一个非常好的正常行为
现在,以下是从远程客户端计算机执行完全相同步骤时的结果文件:
02/10/2018 15:36:19 PageLoad
02/10/2018 15:36:20 PageLoad
02/10/2018 15:36:28 btnTest PageLoad
02/10/2018 15:36:28 btnTest ButtonEvent
02/10/2018 15:36:28 btnTest PageLoad
02/10/2018 15:36:28 btnTest ButtonEvent
如您所见,Page_Load和btnTest_Clicked方法会连续触发两次,就像每次调用服务器时都会加载两次网页一样
考虑到代码的简单性,我真的认为这与网站配置或服务器环境有关,但我并不是这方面的专家
我在互联网上搜索了多次解决方案,花了数小时尝试与纯编程相关的东西,但似乎没有任何效果。我迫切需要解决方案。谢谢!@mbharanidharan88已经找到了这篇文章,但没有找到满意的答案。此外,它没有讨论控制事件,只讨论页面加载(代码是用VB编写的,不是用C#编写的)。因为回发可能有几个原因,其中提到了一些原因。您可以尝试一下……遗憾的是,我已经尝试过了。它没有解释服务器内外的行为差异,这是我遇到的主要问题。无论如何,感谢Chrome开发工具,您可以修改请求并进行分析