我有一个使用 ODP.Net 版本 12.2.1100 的项目。该项目在今天开放之前运行良好。以下代码行导致错误:
using (var cn = new OracleConnection("User Name={userID}, etc, etc"))
返回的错误是:
值不能为空。
参数名称:路径
内部异常
在 System.Security.Permissions.FileIOPermission.CheckIllegalCharacters(String[] str, Boolean onlyCheckExtras)
到目前为止,我已尝试解决此问题:
- 将连接字符串从 EZ Connect 更改为完整的 Oracle 字符串
- 卸载并重新安装 Oracle.ManagedDataAccess.dll(通过 NuGet)
- 确保所有配置文件都是最新的
- 创建了一个新的简单测试控制台项目(连接良好)
最佳答案
我遇到了同样的问题。它也发生在托管数据提供者身上,它发生在第一个被实例化的 Oracle 类上,例如Oracle 参数
。但它只发生在单元测试的调试器或 Assembly.GetEntryAssembly()
返回 null 的其他情况下。
错误的调用栈给了我提示:它调用了System.Web.HttpRuntime.AppDomainAppPath
。这会引发异常。通过查看 Oracle 代码,我发现了一个围绕它的 try-catch,它应该捕获异常但由于某些原因有时会失败。
在另一个项目中,我得到了同样的异常,但这次它在它到达我的代码之前就被捕获了。奇怪的。
以下解决方法对我有用:
try
{
new OracleDependency();
}
catch
{
}
这会触发 ConfigBaseClass
的静态构造函数并忽略错误。在您的代码中调用一次就足够了,例如也在静态构造函数中。我使用了 OracleDependency
,因为它不像大多数其他 Oracle 类那样需要 Dispose
。
关于c# - ODP.Net 新的 OracleConnection "Value cannot be null Parameter Name: path",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46887380/