在我的经典ASP代码是这段代码:
' 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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。