You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#.NET使用ODP.NET非托管驱动实现Kerberos认证遇ORA-1017问题咨询

ODP.NET 非托管驱动 Kerberos 认证 ORA-1017 问题解决方案

你遇到的报错核心原因是两个配置错误:非托管ODP.NET不识别App.config中配置的SQLNET级参数,以及连接字符串未显式指定外部身份认证标识,按以下步骤修正即可:

  • 修改连接字符串
    显式指定使用当前用户身份进行外部认证,和sqlplus命令中的/参数作用一致,修正后的连接字符串为:

    con.ConnectionString = "Data Source=UAT_APP;User Id=/;";
    
  • 迁移SQLNET配置到Oracle客户端配置文件
    非托管ODP.NET底层依赖Oracle客户端核心库,只会读取客户端配置目录下的sqlnet.ora参数,你写在App.config里的三个SQLNET相关配置不会生效,请将以下内容添加到C:\Apps\oracle\network\admin\sqlnet.ora文件中:

    SQLNET.AUTHENTICATION_SERVICES = (Kerberos5)
    SQLNET.KERBEROS5_CONF = C:\Apps\oracle\network\admin\krb5.conf
    TNS_ADMIN = C:\Apps\oracle\network
    

    完成后删除App.config中对应的三个SQLNET.*配置节点,原App.config中保留的FetchSize、Trace相关参数可以正常生效,不需要调整。

  • 确认项目生成平台匹配客户端位数
    你安装的是64位Oracle 12c客户端,请将C#项目的生成平台设置为x64,不要使用Any CPU,避免进程位数不匹配导致的驱动加载异常。

  • 验证Kerberos票据有效性
    运行程序前执行命令klist,确认当前Windows用户持有有效的Oracle服务对应的Kerberos票据,和你运行sqlplus命令时的登录用户一致。

完成以上调整后重新运行程序即可正常通过Kerberos认证连接数据库。

内容的提问来源于stack exchange,提问作者Vishal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:27:03