我们的一位用户在我们的网络应用程序中收到错误。我们无法复制这个问题,我怀疑它与网络有关。我让用户在办公室和家中使用笔记本试用应用程序,并确认问题只发生在他们的办公室。
我登录服务器并在他们办公室试用后立即查看了事件查看器,并在日志中显示以下警告。
我对如何开始跟踪此问题感到茫然。有什么建议吗?
事件查看器记录如下:
事件代码:3005事件消息:发生了未处理的异常。 活动时间:6/20/2012下午6:32:45活动时间(UTC):2012年6月20日10:32:45 PM事件ID:ebf8f628a9b3457cbea117c8c2da2186事件序列:2970 事件发生:26事件详细信息代码:0应用程序信息:
Application domain: /LM/W3SVC/50/ROOT-1-129847041933281152 Trust level: Full Application Virtual Path: / Application Path: c:\websites\foobar.acme.com\ Machine name: MyServer Process information: Process ID: 15152 Process name: w3wp.exe Account name: NT AUTHORITY\NETWORK SERVICE Exception information: Exception type: HttpException Exception message: Server cannot set content type after HTTP headers have been sent. Request information: Request URL: http://foobar.acme.com/Project/Evaluate/ResultsXML.aspx?step=89&uid=4397&rnd=hhf8oe Request path: /Project/Evaluate/ResultsXML.aspx User host address: 192.168.102.1 User: Is authenticated: False Authentication Type: Thread account name: NT AUTHORITY\NETWORK SERVICE Thread information: Thread ID: 12 Thread account name: NT AUTHORITY\NETWORK SERVICE Is impersonating: False Stack trace: at System.Web.HttpResponse.set_ContentType(String value) at System.Web.UI.Page.SetIntrinsics(HttpContext context, Boolean allowAsync) at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at System.Web.UI.Page.ProcessRequest(HttpContext context) at ASP.error_aspx.ProcessRequest(HttpContext context) at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) Custom event details:
答案 0 :(得分:0)
可能与集成管道模式和经典管道模式有关。比较您的两种环境,确保它们在这方面没有区别。
IIRC在集成管道模式下,您可以在写入后重置或删除标头;在经典模式中你不能。
如果您不知道差异,请查看this文章。
答案 1 :(得分:0)
我正在添加第二个答案,以防我在写第一个答案时完全误解了这个问题。在这个答案中,我假设只有一个服务器,这是一个浏览器/用户特定的问题。
确认您发布的错误不是红色鲱鱼 - 检查其他事件的事件日志,并确保只有在您的用户遇到他或她的错误时才会发生。
请描述与错误相关的行为(例如浏览器显示什么?500错误?某种类型的系统错误消息?网络断开?)
检查来自浏览器的流量(例如,查看IIS日志)。除了他在流量中的显示方式外,您的服务器并不关心用户的任何信息。特别是我会留意接受标题中的差异,这可能是浏览器特定的,并且可能在服务器中触发不同的逻辑路径 - 尝试将内容类型设置为用户浏览器将接受的内容。 / p>
这是我现在对答案的疯狂猜测:
ResultsXml.aspx的目的是返回某种文档;该文档需要外部应用程序(例如PDF或XML查看器);它以内联的内容配置返回它;并且办公室计算机的本地安全策略禁用缓存。在这种情况下,第三方查看器应用程序将无法找到该文件,因为缓存将不在那里。
如果我错了,请发布以上内容,我会继续猜测:)