C#Web服务和Flex RPC会话不起作用

时间:2011-10-10 21:52:44

标签: c# asp.net web-services flex flex3

看起来我面临着一个问题。我有.NET + Flex应用程序。

我在Flex中有一个组件,它将.XLS文件上传到服务器。 此组件有一个Progress Bar,它会使用fileref.addEventListener(ProgressEvent.PROGRESS, progressHandler);

更新其栏和标签
private function progressHandler(event:ProgressEvent):void
{   
    uploadProgress.label = "Uploading File %3%%";
    uploadProgress.setProgress(event.bytesLoaded, event.bytesTotal);
}

我使用FileReference和所有的东西来完成这个。我将发布的文件保存在服务器中,如下所示

HttpFileCollection uploadedFiles = Request.Files;
string path = string.Empty;
string sFile = Request.Params["Name"];
if (uploadedFiles.Count != 0)
{
   HttpPostedFile userPostedFile = uploadedFiles[0];
   if (userPostedFile.ContentLength > 0)
   {
     path = Server.MapPath(".\\Uploads\\") + sFile;
     userPostedFile.SaveAs(path);
   }
}

这很好用,我的酒吧和我的标签都刷新了,我的文件被上传到Temp文件夹中,一切正常,所以回到Flex我可以通过{{1}上传文件时收听}。 因此,当调度此事件时,我调用My WebService的WebMethod来读取已发布的文件并迭代所有记录。该文件可能有65,000多行。因此,在某些表中,Oracle数据库中的信息会逐行更新。

我想要实现的目标是在将文件发布到服务器时具有相同的效果。我想要一个进度栏并显示上传到Oracle DB的行数百分比。

所以我在Flex中所做的就是这样:

DataEvent.UPLOAD_COMPLETE_DATA

在C#中我做了这个

//Service is the WebService Instance
ShowPopUpProgress();
Service.wsUploadFileToDb(FileName);     
Service.wsUpdatePercentage();

protected function wsUpdatePercentage_result(event:ResultEvent):void
{           
    compProgress.uploadProgress.label = "Uploading to DB %3%%";
    compProgress.uploadProgress.setProgress(event.result.Actual,     event.result.Total);
    if(event.result.Actual  !=  event.result.Total)
    {
    Service.wsUpdatePercentage();
    }
    else
    {
         RemovePopUpProgress();
    }
}

我不知道在这一点上你是否明白我想做什么。我不知道这是不是最好的方式,还是有另一种方法来实现我的目标。但那就是我所拥有的。由于某种原因,这不起作用,会话变量正确存储在     wsUploadFileToDb方法,但我无法在wsUpdatePercentage中看到它们,它们只是“共享”会话。我调试了两种方法,会话ID也不同。所以会话没有被分享。我不知道还能做什么。我在网站的第一页是一个aspx ..我在会话中放了一个虚拟变量,因为我在一篇文章中读到你必须这样做,在网络服务中启动会话但仍然没有运气。

任何帮助都会非常感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我可以建议另一种方法;而不是尝试在Web应用程序和服务之间共享会话信息,如果您维护一个单独的表,其中包含有关上载到Oracle DB的数据进度的信息,则会更容易。

基本上,您将为从excel插入表中的每一行更新此表,并且您可以从服务中读取此进度表中的信息以将其报告给Flex客户端。

这样,您还可以获得从excel文件到数据库完成的所有上传的审核日志,以及有关它们是否正确成功以及导入的行数的信息。