我们在我们的 ASP.NET 应用程序中使用了一个 Flash 上传器,它适用于我们的大多数客户。但是,对于一些在其组织中设置了代理服务器的人来说,上传会间歇性地失败,从而导致崩溃。在调查该问题时,我发现这是由于代理服务器发起的“需要 407 身份验证”请求。当我们尝试切换在 HTTPS 下运行的整个网站时,这个问题似乎得到了解决,但是这在整个应用程序中引发了其他一些 500 错误。作为临时修复,我只为上传组件启用了 HTTPS,使网站在 HTTP 下运行。这似乎解决了现在的问题。
但由于我期待永久修复,我正在考虑在我的 Flash 代码中处理代理异常 (407) 并尝试使用 HTTPS 调用重新发出它(虽然不确定这是否允许)。当我尝试处理 HTTPStatusEvent 时,我使用提琴手正确地得到了异常,但是即使我通过 HTTPS 强制上传请求,也没有进一步的请求。请在下面找到我正在执行的代码示例(ActionScript Flex 3)
_file.addEventListener(HTTPStatusEvent.HTTP_STATUS ,OnHttpError);
私有函数 OnHttpError(event:HTTPStatusEvent):void{ if (event.status==407){ Upload(true); } else{ HandleExceptions("Http 错误:",event.status,""); } this.dispatchEvent(event); } 公共函数上传(enableHttps:Boolean=false):void{ _uploading = true; _bytesUploaded = 0;
var uploadURLTemp:String = _uploadUrl;
if(enableHttps==true){
uploadURLTemp = uploadURLTemp.replace("http://","https://");
}
_file.upload(new URLRequest(uploadURLTemp));
}
_file 对象是一个 FileReference 对象,_uploadURL 是服务器中的上传处理程序 url。我不确定我是否被允许这样做,或者有没有更好的方法来处理这个问题。
任何想法或想法将不胜感激
问候
谢林