问题描述
我有.Net 5/6应用程序,由于合规性要求,我被要求与代理用户(连接字符串中没有密码)一起使用Oracle Wallet。简单地说: 新连接字符串为:Data Source=myproxy; User Id=/;
我在当前工作目录下放了以下文件,即bin/DEBUG/net5.0:
tnsnames.ora示例文件数据:
myproxy=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostip)(PORT=myport))(CONNECT_DATA= (SERVICE_NAME =myservname)(SERVER=DEDICATED)))
sqlnet.ora
示例文件数据
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 0
WALLET_LOCATION =(SOURCE =(METHOD = FILE)(METHOD_DATA =(DIRECTORY=mydirectorieswallets)))
我有一个.Net框架应用程序,可以很好地处理上述文件和钱包。但我似乎无法让它与.Net核心应用程序一起工作。我甚至用过OracleConfiguration.OnsWalletLocation
,但一点用都没有。
以下是错误示例:
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-01017: invalid username/password; logon denied
at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, OracleConnection connRefForCriteria)
at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
推荐答案
我能够使用.net5应用程序运行Oracle Wallet。对我来说,除了甲骨文钱包之外,在应用程序层面没有任何问题。具有代理用户的Oracle Wallet不适用于我,但我能够使用架构用户和密码运行Oracle Wallet。
除了创建钱包外,其他一切都与上面的问题相同。 以下是创建钱包的命令,让您了解哪些有效,哪些无效。
起作用的钱包:
创建钱包mkstore -wrl . -create
mkstore -wrl . -createCredential myproxy mySchemaUserName mySchemaUserPassword
无法使用的钱包:
创建钱包mkstore -wrl . -create
mkstore -wrl . -createCredential myproxy myProxyUserName[mySchemaUserName] myProxyUserPassword