获取所有执行的函数列表,如asp.net中的调用堆栈

时间:2009-01-27 16:46:05

标签: asp.net debugging session stack-trace

我在调试我在网站上遇到的一个问题时遇到了问题。这就是问题。我有一个网页,其中包含员工的照片和与员工相关的信息。当用户登录我们的网站时,我们会在会话中存储员工的详细信息。我正在为员工的照片设置图片网址,如下所示。

imgEEPhoto.ImageUrl = imgPhoto.aspx?Company=XXXX&Empno=YYYY. 

在页面imgPhoto.aspx中,我正在检查该用户的会话是否处于活动状态。当我登录有员工照片的页面时,有时候不会显示照片。这是因为我在imgPhoto.aspx页面中检查会话是否存在。有时候会话还活着,有时会话还没有活着。看起来有一些函数将会话异步设置为null。我不知道如何跟踪该功能。所以我想在imgPhoto.aspx页面中,如果我可以获得到目前为止已执行的所有函数的列表,我可以跟踪重置会话的功能。有没有办法找到这个?

如果没有其他方法可以调试此问题,请告知我们。

修改

页面imgPhoto.aspx将company和empno作为查询字符串参数。然后页面根据company和empno获取二进制数据,并使用Response.BinaryWrite()显示照片。会话检查位于此功能的开头。所以在调用此函数之前的某个地方以及在mainpage中所有函数结束之后会话正在进行timedout。实际上我不确定它是否会超时,因为我可以打印sessionid。但我无法访问存储在会话中的变量。

如果我在函数内打印callstack,它会给出在该页面内执行的函数列表。它没有给出在该函数之前执行的所有函数。

3 个答案:

答案 0 :(得分:0)

.NET中没有内置工具列出所有被调用的函数,尽管你可以在特定的点打印调用堆栈(比如异常)。

如果这是您想要的路线,我建议您寻找代码覆盖率分析器。

答案 1 :(得分:0)

如果我理解了这个问题,imgphoto.aspx正在构建一个包含网址的字符串,然后将其发送回来,对吗?如果是这样,如果您修改了imgPhoto.aspx以始终返回您知道defintely存在的图像的硬编码URL,那么您仍然遇到问题吗?

我想首先排除你不会无意中发回一个格式错误的网址,或者一张不存在的照片的网址。我先尝试这个,不检查会话,如果你不能重现问题(即总是有效),然后添加会话检查,仍然发回一个静态网址,看看问题是否可以重复。

我总是先尝试排除'简单'的事情 - 也许你已经做过了?

答案 2 :(得分:0)

听起来好像你的问题是断断续续的,也许你的会话状态是超时的? 您可以在会话结束时记录Gloabal.asax文件的Session_End方法,以确切了解会话何时终止。您可以尝试增加会话超时(默认为20分钟)分辨率,如下所示:

可以在Web.config文件中设置Timeout属性

<SessionState timeout = "30" />

或者,您可以使用应用程序代码

直接设置Timeout属性值
Session.Timeout = 30