C# 打开包进行写入时出现奇怪错误

C# 打开包进行写入时出现奇怪错误,c#,.net,package,C#,.net,Package,首先,我使用的是.NET4 我试图将一些文件写入包,但在执行此操作时遇到了一些奇怪的情况: using (var package = Package.Open(filename, FileMode.OpenOrCreate, FileAccess.Write)) { // do something with package } 包指的是 奇怪的是,Package.Open方法抛出一个异常,该异常表示: 无法使用FileMode.Create、FileMode.CreateNew、Fil

首先,我使用的是.NET4

我试图将一些文件写入包,但在执行此操作时遇到了一些奇怪的情况:

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

奇怪的是,Package.Open方法抛出一个异常,该异常表示:

无法使用FileMode.Create、FileMode.CreateNew、FileMode.Truncate、FileMode.Append(当访问权限为FileAccess.Read时)获取流

我在Microsoft Connect上发现了2009年的旧错误报告:

但这没用


有人有主意了吗?

我想我发现了问题所在

当我更改为代码以执行此操作时:

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
}

而且它不再崩溃,而且似乎工作正常。

似乎您在这里没有适当的权限。@Akram有趣的是,一个0字节的文件最终在
文件名
处创建。如果您使用FileAccess.Read,它能工作吗?@Akram Nope,同样的错误。但考虑到我正试图写入文件,我怀疑这是否有效……我知道这听起来很愚蠢。尝试FileAccess。这次创建..真奇怪。不过,这是一个好问题。+1去掉文件访问参数似乎也能解决这个问题。很高兴我找到了你的帖子!我已经准备好了一个漫长的晚上来做这个。。。