Загрузить файл в WebDAV в проекте UWP - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь реализовать операцию записи в хранилище WebDAV с использованием Portable-WebDAV-Library , но мой код

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 голосов
/ 10 мая 2019

Проблема заключалась в том, что StreamWriter закрыл MemoryStream в конце своего блока использования. Таким образом, перемещение } от предыдущего к await webDavSession.UploadFileAsync(uri, ms); решило проблему:

До:

  ms.Position = 0;
}

await webDavSession.UploadFileAsync(uri, ms);

После того, как:

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