我正在编写一个简单的报表应用程序,它从外部服务器上的SQL数据库中提取数据,并根据所述数据发送HTML电子邮件。
项目在99%的时间内完美地构建和执行,除了在我修改app.config文件之后。修改app.config文件后,第一次构建和运行(在Visual Studio 2012 Pro中)会产生以下错误:
"操作无法完成。该进程无法访问该文件,因为它正由另一个进程使用。"
构建成功,但在构建后立即生成此错误。
我找到了其他几个有类似问题的用户,解决方案各不相同。由于同样的原因,没有相同的错误。许多人将错误归因于VS调试器问题。
是否有其他人遇到同样的问题,或者有人知道可能导致此问题的原因吗?请注意,我在Debug和Release中都得到了相同的错误。即使连接字符串未加密,也会生成相同的错误。
我已经在下面添加了app.config文件,以及访问配置信息的所有代码。
配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<appSettings>
<add key="minimum_days" value="40"/>
<add key="maximum_days" value="70"/>
</appSettings>
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>......ciphertext...</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>...ciphertext...</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
</configuration>
访问代码:
private int min_threshold = Convert.ToInt32(ConfigurationManager.AppSettings.Get("minimum_days"));
private int max_threshold = Convert.ToInt32(ConfigurationManager.AppSettings.Get("maximum_days"));
private string connection_string = ConfigurationManager.ConnectionStrings["str1"].ConnectionString;