"Permission denied"
连接到.sdf
文件时出现异常。
我正在使用这个连接字符串。
connection string="Data Source=|DataDirectory|\DB.sdf;Password='something';Mode = Read Only;Temp Path= Environment.GetFolderPath(Environment.SpecialFolder.Templates);Persist Security Info=True"" providerName="System.Data.EntityClient" />
这在 Win 7 上可以正常工作,但是当我在 Win XP 上运行我的应用程序时,它会返回
没有权限
例外
我为临时文件尝试了不同的地址,但仍然失败。所有这些选项都是正确的
- 数据库文件的路径存在于 xp 机器上
- 我有权在给定目录中创建临时文件
- 我提供了正确的密码。
这个问题发生在数据库连接字符串设置为只读时。我找到了一些解决方案,但我不能使用它们:
解决方案1:
这是关于这个的独家新闻。当我们将 SDF 文件从 XP 移动到 Vista 时,由于 NLS 版本的更改,我们尝试以读写模式打开文件以重写索引(如果存在)。这仅在从 XP 到 Vista 的移动中第一次打开时发生。因此,一个简单的解决方法是暂时将文件更改为读写模式,在 Vista 上打开它并将其恢复为只读。
我无法使用此解决方案,因为我的应用程序从 DVD 运行。
解决方案2:
有 3 个 sdf 文件,一个用于 XP/Server 2003,一个用于 Vista/Server 2008/Win7,一个用于 win 8
这也很糟糕,因为我在应用程序 DVD 上没有可用空间来执行此操作。
任何人都有解决这个问题的好主意。