5

我们的一位用户在我们的 Web 应用程序中遇到错误。我们无法复制这个问题,我怀疑它与网络有关。我让用户在他们的办公室和家里使用他们的笔记本尝试应用程序,并确认问题只发生在他们的办公室。

我登录服务器并在他们在办公室尝试后立即查看事件查看器,日志中出现以下警告。

我不知道如何开始追踪这个。有什么建议么?

事件查看器日志如下:

事件代码:3005 事件消息:发生未处理的异常。事件时间:2012 年 6 月 20 日下午 6:32:45 事件时间 (UTC):2012 年 6 月 20 日晚上 10:32:45 事件 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:
4

2 回答 2

0

我正在添加第二个答案,以防我在写第一个答案时完全误解了这个问题。在这个答案中,我假设只有一台服务器,这是一个浏览器/用户特定的问题。

  1. 确认您发布的错误不是红鲱鱼 - 检查事件日志以查找其他事件,并确保它仅在您的用户遇到他或她的错误时发生。

  2. 请描述与错误相关的行为(例如浏览器显示什么?500 错误?某种系统错误消息?网络断开?)

  3. 检查来自浏览器的流量(例如查看 IIS 日志)。除了用户在流量中的出现方式之外,您的服务器一点也不关心用户的任何事情。特别是我会留意接受标头的差异,这可能是特定于浏览器的,并且可能会触发服务器中的不同逻辑路径——尝试将内容类型设置为用户浏览器将接受的内容类型。

这是我现在对答案的疯狂猜测:

ResultsXml.aspx 的目的是返回某种文档;该文档需要外部应用程序(例如 PDF 或 XML 查看器);它以 inline 的内容配置返回它;并且办公室计算机的本地安全策略禁用缓存。在这种情况下,第三方查看器应用程序将无法找到该文件,因为缓存不存在。

如果我错了,请发布上面的内容,我会继续猜测:)

于 2013-09-24T00:41:01.260 回答
0

可能与集成与经典管道模式有关。比较您的两个环境并确保它们在这方面没有区别。

IIRC 在集成流水线模式下,您可以在写入标头后重置或删除标头;在经典模式下你不能。

如果您不知道区别,请查看本文

于 2013-09-23T22:02:33.047 回答