小编Fer*_*Fer的帖子

如何解锁FileStream锁?

我正在实现一个模块,用于将文件从客户端机器上传到服务器.在服务器端,我正在使用WCF Soap服务.

为了以块的形式上传文件,我已经从Microsoft http://msdn.microsoft.com/en-us/library/aa717050.aspx实现了这个示例.我已经能够在一个简单的场景中使它工作,所以它确实以块的形式上传文件.此分块模块使用WSDualHttpBinding.

我需要实现一个功能来重新上传文件,以防上传过程因上载特定文件而出于任何原因(用户选择,机器关闭等)而停止.

在我的WCF服务中,我有一个方法来处理服务器端的文件写入:

public void UploadFile(RemoteFileInfo request)
{
FileInfo fi = new FileInfo(Path.Combine(Utils.StorePath(), request.FileName));

if (!fi.Directory.Exists)
{
    fi.Directory.Create();
}

FileStream file = new FileStream(fi.FullName, FileMode.Create, FileAccess.Write);
int count;
byte[] buffer = new byte[4096];
while ((count = request.FileByteStream.Read(buffer, 0, buffer.Length)) > 0)
{
    file.Write(buffer, 0, count);
    file.Flush();
}
request.FileByteStream.Close();
file.Position = 0;
file.Close();

if (request.FileByteStream != null)
{
    request.FileByteStream.Close();
    request.FileByteStream.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)

当函数request.FileByteStream.Read(buffer,0,buffer.Length)被消耗时,分块模块正在发送块.

文件流初始化后,文件被锁定(这是初始化文件流进行写入时的正常行为),但我遇到的问题是我在执行发送/接收过程时停止上传过程,然后是频道分块模块使用的文件未被取消,因此文件保持锁定,因为WCF服务仍在等待发送更多数据,直到发送超时到期(超时为1小时,因为我需要上传文件+ 2.5GB).在下一次上传时,如果我尝试上传同一个文件,我会在WCF服务上遇到异常,因为无法再为同一个文件初始化文件流.

我想知道是否有办法避免/删除文件锁,所以在下次运行时我可以重新上传同一个文件,即使前一个文件流已经锁定了文件.

任何帮助都会很感激,谢谢.

.net wcf wcf-binding

10
推荐指数
1
解决办法
589
查看次数

每次刷新时都从更新面板内部执行javascript

我有一个aspx页面,由3个用户控件(ascx)组成.我有一个更新面板包装3个用户控件,如下所示:

<asp:UpdatePanel ID="UpdatePanelWrapper" runat="server">
    <ContentTemplate>
         <uc1:UserControl1 ID="UserControl1" runat="server" />        
         <uc2:UserControl2 ID="UserControl2" runat="server"/>
         <uc2:UserControl3 ID="UserControl3" runat="server"/>
    </ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

我通过单独显示每个用户控件,因此当显示"UserControl1"时,隐藏其他2个用户控件.

在"UserControl1"里面我有一些asp控件和一些javascript函数.我的问题是,当刷新"UpdatePanelWrapper"时,永远不会调用这些javascript函数.

我已经尝试过这个解决方案http://blog.dreamlabsolutions.com/post/2009/02/24/jQuery-document-ready-and-ASP-NET-Ajax-asynchronous-postback.aspx,通过添加javascript调用内部"UserControl1"虽然不起作用.只有当我在aspx页面中添加javascript调用但不在"UserControl1"内部时,我才能使用它.

任何帮助将不胜感激,谢谢.

javascript vb.net asp.net ajax updatepanel

8
推荐指数
1
解决办法
8872
查看次数

清除AjaxToolkit AsyncFileUpload控件

我在我的aspx.net页面中使用AsyncFileUpload控件.此控件在更新面板中运行.

我可以异步将文件成功上传到服务器.

我的问题是我无法在每个文件上传后刷新整个页面,因此我需要弄清楚如何清理上次上传的文件,因此当用户选择要上传的新文件时,旧文件不会出现在控件和控件中不会在ViewState中保留其上次上载.

我试过这个http://www.aspsnippets.com/Articles/Clear-contents-of-AsyncFileUpload-Control-after-upload-and-page-revisit.aspx但它只清除html,当我做服务器时异步回发,AsyncFileUpload控件仍然上传了最后一个文件.

有没有办法在服务器端进行清理?也许任何与视图状态相关的东西

任何帮助将不胜感激,谢谢.

asp.net ajaxcontroltoolkit

5
推荐指数
1
解决办法
8440
查看次数