将文件上传到UWP项目中的WebDAV

时间:2019-05-08 20:03:46

标签: c# uwp stream webdav

我正在尝试使用Portable-WebDAV-Library但我的代码对WebDAV存储执行写操作

var credentials = new NetworkCredential("user", "password");
var webDavSession = new WebDavSession(@"https://...", credentials);
Uri uri = new Uri("https://.../SubDir/somefile.txt");

try
{
  using (MemoryStream ms = new MemoryStream())
  {
    using (StreamWriter sw = new StreamWriter(ms))
    {
      sw.Write(DateTime.Now.ToString("G"));
      sw.Flush();
      ms.Position = 0;
    }

    await webDavSession.UploadFileAsync(uri, ms);
  }
}
catch (Exception ex)
{
}

引发异常“由于该流不可读,因此无法将指定的流用作Windows运行时IInputStream。”我已经试验了IRandomAccessStream和IOutputStream,但是产生了其他异常。

1 个答案:

答案 0 :(得分:0)

问题在于,StreamWriter在其using块结束时关闭了MemoryStream。因此,将}await webDavSession.UploadFileAsync(uri, ms);的前面移到后面可以解决此问题:

之前:

  ms.Position = 0;
}

await webDavSession.UploadFileAsync(uri, ms);

之后:

  ms.Position = 0;
  await webDavSession.UploadFileAsync(uri, ms);
}