本周我们的服务器上出现了一个非常奇怪的问题,其中一个aspx脚本中的方法(没有代码隐藏文件)以某种方式从其他地方的完全不相关的页面调用我们的网站。基本上,剧本这样说:在其他脚本中使用ASPX页面的公共方法
<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
// some initializer logic
PageMethod("data");
}
public string PageMethod (string strInput)
{
// More logic
}
</script>
我们经营的四台服务器一个农场,我们看到了PageMethod
过得去的所有服务器上的几个地方脚本调用,所以当我的第一反应是,这是一个已损坏缓存在服务器上(我仍然怀疑它可能),我的直觉告诉我,我们允许这发生在我们的代码中。我们一直在使用这种代码风格的yonks,但最近升级我们的服务器到.NET 2.0。
我的第一个问题是,如果在某个网站的其他地方的脚本中可以访问aspx中的每个public
方法?我的第二个问题是,如果我们在aspx页面上使用private
或protected
方法(我总是认为独立页面中的代码是自包含的,所以草率的访问修饰符应该没有区别)。
(注:我不写太多C#,所以我的语言的把握是非常简单,只是理论上的,我只是想成为一个真正的问题之前解决此问题)
您能否提供有关您所看到/看到的内容的更多信息,从而促使您认为这些方法是来自不相关网页的呼叫?你在哪里“看到”PageMethod被称为?在你的日志中?这种情况下完整的网址是什么? – 2011-02-26 09:23:32
是否有其他页面有一个名为“Page_Method”的方法?不知道你如何确定(或者认为)其他请求正在调用这个特定页面的方法,这很难说。 – 2011-02-26 09:43:42
@Shiv库马尔,我们的服务器捕获所有未处理的异常的堆栈跟踪,所以我可以看到脚本崩溃的Page_Load,紧跟在Page_Load之后,我看到了对PageMethod的调用。但是这两页之间绝对没有联系。它几乎看起来像是一个缓冲区溢出问题。 – Andrew 2011-02-26 11:13:52