Странная ошибка при открытии пакета для записи

#c# #.net #package

#c# #.net #пакет

Вопрос:

Перво-наперво, я использую .NET 4.

Я пытаюсь записать некоторые файлы в пакет, и я сталкиваюсь с чем-то странным, когда я делаю это:

 using (var package = Package.Open(filename, FileMode.OpenOrCreate, FileAccess.Write))
{
    // do something with package
}
  

Package относится к System.IO.Packaging.Package .

Странная вещь заключается в том, что пакет.Метод Open выдает исключение, в котором говорится:

Не удается получить поток с FileMode.Создать, FileMode.Создайте новый файловый режим.Усечение, FileMode.Добавлять при доступе FileAccess.Read.

Я нашел старый отчет об ошибке 2009 года в Microsoft Connect:http://connect.microsoft.com/VisualStudio/feedback/details/392318/argumentexception-text-is-wrong

Но это не помогает.

Итак, у кого-нибудь есть идея?

Комментарии:

1. Похоже, у вас здесь нет соответствующих разрешений..

2. @Akram Забавно то, что файл размером 0 байт в конечном итоге создается в filename .

3. Работает ли это, если вы использовали FileAccess. Читать?

4. @Akram Нет, та же ошибка. Но я сомневаюсь, что это сработает, учитывая, что я пытаюсь записать в файл…

5. Я знаю, это звучит глупо. Попробуйте FileAccess. Создайте на этот раз ..

Ответ №1:

Я думаю, что нашел проблему.

Когда я изменил код, чтобы сделать это:

 using (var stream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write))
{
    using (var package = Package.Open(stream))
    {
        // do something with package
    }
}
  

Я получил довольно приличное сообщение об ошибке:

Не удается открыть пакет, поскольку значение FileMode или FileAccess недопустимо для потока.

Я думаю, что это «реальное» сообщение об ошибке, и что кто-то где-то просто перепутал его с этим бессмысленным при выполнении локализации.

Затем я изменил код для этого:

 // no FileAccess parameter
using (var package = Package.Open(file, FileMode.OpenOrCreate))
{
    // do something with package
}
  

И он больше не вылетает и, кажется, работает должным образом.

Комментарии:

1. Это странно. Хорошая уловка, однако.

2. 1 Отключение параметра доступа к файлу, похоже, также решает эту проблему для меня. Конечно, рад, что нашел ваши сообщения! Я был полностью готов провести долгий вечер, работая над этим…