我正在做一个关于以下问题的噩梦,我试图通过描述最简单的测试案例尽可能简单地介绍我已经设法重新创建问题。
首先,我有一个ASP.NET应用程序。
其次,我有一个Flex客户端,它使用HTTPService访问ASP.NET网站上的资源。
使用以下代码访问服务:
<mx:HTTPService id="rpcTest"
url="{url}"
result="onServiceResult(event)"
method="GET"
resultFormat="text"
useProxy="false"
showBusyCursor="true">
</mx:HTTPService>
在我的Flex应用程序中,我有一个执行此操作的按钮:
private function doTest2():void
{
arrMsgs.removeAll();
mgrTest1.loadData(someUrl);
mgrTest2.loadData(someUrl);
mgrTest3.loadData(someUrl);
}
其中每个mgrTest *对象是一个包装HTTPService的MXML组件,如上所述:
问题是单击此按钮可能会导致以下错误:
[RPC Fault faultString =“HTTP request error”faultCode =“Server.Error.Request”faultDetail =“错误:[IOErrorEvent type =”ioError“bubbles = false cancelable = false eventPhase = 2 text =”错误#2032:流错误。网址:http://localhost:50352/Home/About“]。网址:http://localhost:50352/Home/About”] 在mx.rpc :: AbstractInvoker / http://www.adobe.com/2006/flex/mx/internal :: faultHandler()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ rpc \ src \ mx \ RPC \ AbstractInvoker.as:220] 在mx.rpc :: Responder / fault()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ rpc \ src \ mx \ rpc \ Responder.as:53] 在mx.rpc :: AsyncRequest / fault()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ rpc \ src \ mx \ rpc \ AsyncRequest.as:103] 在DirectHTTPMessageResponder / errorHandler()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ rpc \ src \ mx \ messaging \ channels \ DirectHTTPChannel.as:362] 在flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() 在flash.net::URLLoader/onComplete()
这种间歇性行为确实令我难过!
观察:
1 - 问题是间歇性的。它经常在我第一次点击按钮时发生。如果我只是一直点击按钮(即所有服务都工作),它几乎不会再发生。如果我等待5分钟左右再次点击按钮,它几乎总是再次失败。
2 - 如果我只调用一个服务而不是三个服务,它就永远不会发生。
3 - 在Firefox中永远不会发生
4 - 如果我尝试使用Fiddler / Charles检查客户端计算机上的流量,它就永远不会发生。
5 - 我在ASP.NET站点上访问的资源类型似乎并不重要。 (aspx,ashx,xml)
6 - HTTPService结果格式设置为什么似乎并不重要。
7 - 我还没有设法重新创建从非ASP.NET站点访问资源的问题。
我已经和它搏斗了好几天,而我提出的最好的方法是每5秒使用一次定时器,它使用HTTPService来访问服务器上的一个简单的keep-alive url。出于某种原因,这似乎有所帮助,但我不确定为什么,或者即使我可以依赖它作为解决方案。
如果有人可以提供帮助,我将非常感激。 (我有一个令人尴尬的情况,我需要解决一个裁短者: - (
由于
Gary B
标题示例:
HTTP / 1.1 200好的 服务器:ASP.NET Development Server / 10.0.0.0 日期:2011年6月15日星期三格林威治标准时间11:04:09 X-AspNet-Version:4.0.30319 X-AspNetMvc-Version:3.0 缓存控制:私有 内容类型:text / html;字符集= utf-8的 内容长度:921 连接:关闭
我从Fiddler那里拿走了这些,当然,一旦我使用Fiddler,我就永远不会收到错误!我假设标题与返回给Flex的标题相同,如果Fiddler不存在的话。不确定我是否可以使用Flex中的标题。