我正在开发一个将重要数据存储在app.config中的asp.net应用程序。在Windows 10之前的所有Windows版本中,测试都正确加载了我想要的数据,但是一旦我将系统升级到Windows 10,应用程序就不再能够通过相同的测试而无法获取数据。每当从app.config文件中读取时,如下面的代码所示,总是返回Null。\
var data = System.Configuration.ConfigurationManager.AppSettings["PathName"];
在Windows 8中运行时,返回的值是我使用的有效字符串。在Windows 10中运行时,尽管文件存在,但仍返回null。稍后在关于path3使用该值时,将触发异常并发生下面显示的错误。 Path3来自一个传入Null值的函数。
threw exception: System.ArgumentNullException: Value cannot be null. Parameter name: path3
我已尝试将用户权限更改为文件,文件夹等,但似乎没有任何更改。我也改变了用户帐户控制设置,没有运气。我正在使用Visual Studios 2013 Professional并始终在管理模式下运行它。
我在网上看到的所有东西都没有多大帮助,并且几乎重申了我已经尝试过的大部分步骤。非常感谢任何见解。
app.config的内容(Key =" PathName")
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
<appSettings>
<add key="PathName" value="DATA_VALUE_NEEDED" />
</appSettings>
<applicationSettings>
</applicationSettings>
</configuration>
答案 0 :(得分:0)
因此,在尝试了很多解决方案之后,我终于找到了造成问题的原因。我不确定为什么会这样,但这就是发生的事情。
在Windows 8上,测试项目中的app.config文件直接从其所针对的主项目加载。这意味着,如果为测试创建一个单独的项目,它会链接到加载app.config文件时创建的原始项目。
在Windows 10中,出于某种原因,似乎并非如此。出于某种原因,正在读入的app.config文件不是为其创建测试的项目。虽然在两个操作系统版本之间移植代码之间没有更改任何设置或配置,但它是某种自动生成的默认值。
我能够通过将文件直接从主项目复制到测试项目中来解决问题。然后,通过两者之间的链接,当任何一个更改时,它们将保持更新。
我仍然不明白为什么会发生这种情况,无法找到生成的app.config文件。调试之后,我只是注意到整个项目存储库中的任何单个XML文件中都没有可用的加载键值对。希望这可以帮助其他人继续解决同样的问题,因为我已经在网上看到其他一些报道,其中有人遇到了这个问题。谢谢大家的帮助!