我有一个使用ODP.Net版本12.2.1100的项目。这个项目工作正常,直到今天开放。以下代码行导致错误:
using (var cn = new OracleConnection("User Name={userID}, etc, etc"))
返回的错误是:
Value cannot be null.
Parameter name: path
内部异常
at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters(String[] str, Boolean onlyCheckExtras)
到目前为止,我尝试过解决问题的事情:
答案 0 :(得分:0)
接下来,在我的列表中,检查我的项目并要求同事打开它以确定问题是否与代码一起传播。他能够成功执行。我删除了我的工作副本并将其从TFS中删除,所有内容都重新开始工作。我怀疑bin
目录中的某些内容已损坏。
答案 1 :(得分:0)
我有同样的问题。它也发生在Managed Data Provider中,并且发生在第一个实例化的Oracle类中,例如OracleParameter
。但这仅发生在单元测试的调试器中,或者在Assembly.GetEntryAssembly()
返回null的其他情况下发生。
该错误的调用堆栈给了我一个提示:它调用System.Web.HttpRuntime.AppDomainAppPath
。这引发异常。通过查看Oracle代码,我发现了围绕它的try-catch应该捕获异常,但是由于某些原因有时会失败。
在另一个项目中,我遇到了相同的异常,但是这次它在命中我的代码之前就被捕获了。奇怪。
以下解决方法对我有用:
try
{
new OracleDependency();
}
catch
{
}
这将触发ConfigBaseClass
的静态构造函数,并忽略该错误。只需在您的代码中调用一次即可,例如同样在静态构造函数中。我使用OracleDependency
是因为它与大多数其他Oracle类一样不需要Dispose
。