' Process @ alerts Dim objHttp set objHttp = Server.CreateObject("Microsoft.XMLHTTP") objHttp.open "POST",strSiteRoot & "handlers/forumalerts.ashx?",false objHttp.setRequestHeader "Content-type","application/x-www-form-urlencoded" objHttp.Send "topicID=" & lngTopicID & "&threadID=" & lngLastPostID set objHttp = nothing
这是向ASP.net ASHX处理程序发送请求.运行时,它会在最终发送错误消息之前挂起很长时间:
msxml3.dll error ‘800c0008’
The download of the specified resource has Failed.
/forum/new_post.asp,line 1036
我已经检查了它发布到的URL,它存在且正在运行.发送的数据也是正确的.
在我全新安装Windows 7之前,它运行良好.由于重新安装它,并再次设置IIS这段代码失败,让我相信它是一个权限/身份错误.
有谁能告诉我是什么原因造成的?我有3个应用程序池:
ASP.net v4.0 (Integrated) (ApplicationPoolIdentity) ASP.net v4.0 Classic (Classic) (ApplicationPoolIdentity) DefaultAppPool (Integrated) (NetworkService)
谢谢你的帮助!
编辑:我在日志中发现了这个错误:
Event code: 3005 Event message: An unhandled exception has occurred. Event time: 02/11/2011 14:55:42 Event time (UTC): 02/11/2011 14:55:42 Event ID: 4e550d910b934d2781707701f833e18e Event sequence: 39 Event occurrence: 1 Event detail code: 0 Application information: Application domain: /LM/W3SVC/1/ROOT-2-129647191892089824 Trust level: Full Application Virtual Path: / Application Path: C:\inetpub\wwwroot\ScirraNew\ Machine name: TOM-PC Process information: Process ID: 7980 Process name: w3wp.exe Account name: NT AUTHORITY\NETWORK SERVICE Exception information: Exception type: ArgumentNullException Exception message: Value cannot be null. Parameter name: String at System.Number.StringToNumber(String str,NumberStyles options,NumberBuffer& number,NumberFormatInfo info,Boolean parseDecimal) at System.Number.ParseInt32(String s,NumberStyles style,NumberFormatInfo info) at System.Int32.Parse(String s) at forumalerts.ProcessRequest(HttpContext context) in c:\inetpub\wwwroot\ScirraNew\Handlers\forumalerts.ashx:line 13 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously) Request information: Request URL: http://127.0.0.1/handlers/forumalerts.ashx Request path: /handlers/forumalerts.ashx User host address: 127.0.0.1 User: Is authenticated: False Authentication Type: Thread account name: NT AUTHORITY\NETWORK SERVICE Thread information: Thread ID: 39 Thread account name: NT AUTHORITY\NETWORK SERVICE Is impersonating: True Stack trace: at System.Number.StringToNumber(String str,Boolean& completedSynchronously) Custom event details:
第13行是第一个request.form:
int TopicID = int.Parse(context.Request.Form["topicID"]);
解决方法
阅读http://support.microsoft.com/kb/316451
Using ServerXMLHTTP or WinHTTP objects to make recursive Hypertext Transfer Protocol (HTTP) requests to the same Internet Information Server (IIS) server is not recommended. More specifically,the calling Active Server Page (ASP) should not send requests to an ASP in the same virtual directory or to another virtual directory in the same pool or process. This can result in poor performance due to thread starvation.