`
wang_guo_qiang
  • 浏览: 113408 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

.Net Web应用无法连接Oracle问

    博客分类:
  • net
阅读更多
老问题,新状况 ------.Net Web应用无法连接Oracle问
      

       关于.Net 应用无法连接Oracle数据库,从来不是什么新问题,而是一个经常困扰程序部署人员的痼疾,从遥远的过去到现在,它时不时地就蹦出来,烦你一阵。

        该问题的具体症状是数据库连接字符串的udl试验没问题,plsql developer 没问题, Sql/Plus 没问题,可是.Net应用却总报无法连接Oracle数据库的错:调用的目标发生了异常!

        好在有前人的的努力,解决这个无厘头的问题也不再是多么困难的事情。一位老大早在03年就搞定了这个问题,虽然搞定的过程也异常郁闷。以下摘自该君的邮件。

-------------------------------------------
发件人: gene
发送时间: 2003年8月21日 10:15
主题: 莫名其妙的一夜
………………………... 由于公司网络问题研发许多主机没在线,只好下载了oracle client9.2.0.1,结果此版本在IIS下的backend不能连接数据库,但sms service确可正常连接,……………………….后查阅资料发现此为oracle一个bug,原因是NTFS的安全与IIS运行的用户模式问题,解决方法如下,以共借鉴:
到Oracle\ora92 打开Ora92的-》属性-》安全,选Authenticated Users 看下面的属性 将Read and Execute 的勾去掉,然后又勾上,确定重新启动机器 ,ok 搞定,就是这么简单,当然要避免这种问题,您可以这么做:不要安装Oracle9.2 或者不要安装在NTFS格式的分区。
附上
Oracle 公司的原版资料:
Problem Description ------------------- When running an application that connects to Oracle and uses the Authenticated User privilege (such as Microsoft's Internet Information Server (IIS)) via Oracle's 9.2 client software and any of these programmatic interfaces 1. Oracle Provider for OLE DB 2. Microsoft OLE DB Provider for Oracle 3. Oracle ODBC Driver 4. Microsoft ODBC for Oracle 5. Oracle Objects for OLE (OO4O) you will receive one of the following errors: (1) Oracle Provider for OLE DB Error Type: Microsoft OLE DB Service Components (0x80070005) Access is denied. (2) Microsoft OLE DB Provider for Oracle Error Type: Microsoft OLE DB Provider for Oracle (0x80004005) Oracle client and networking components were not found. These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software installation. Provider is unable to function until these components are installed. Or Error Type: Microsoft OLE DB Provider for Oracle (0x80004005) Oracle error occurred, but error message could not be retrieved from Oracle. (3) Oracle ODBC Driver Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) Specified driver could not be loaded due to system error 5 (Oracle in OraHome92). (4) Microsoft ODBC for Oracle The Oracle(tm) client and networking components were not found. These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3 (or greater) client software installation. You will be unable to use this driver until these components have been installed. (5) Oracle Objects for OLE (a) while using a GLOBAL.ASA file Error Type: Active Server Pages (0x0) An error occurred while creating object 'OraSession'. (b) not using a GLOBAL.ASA file Error Type: Microsoft VBScript runtime (0x800A0046) Permission denied: 'CreateObject' (6) Other miscellaneous errors (a) The Specified Module Could Not Be Found Solution Description -------------------- You need to give the Authenticated User privilege to the Oracle Home by following these steps: 1. Log on to Windows as a user with Administrator privileges. 2. Launch Windows Explorer from the Start Menu and and navigate to the ORACLE_HOME directory. 3. Right-click on the ORACLE_HOME folder and choose the "Properties" option from the drop down list. A "Properties" window should appear. 4. Click on the "Security" tab on the "Properties" window. 5. Click on "Authenticated Users" item in the "Name" list (on Windows XP the "Name" list is called "Group or user names"). 6. Uncheck the "Read and Execute" box in the "Permissions" list (on Windows XP the "Permissions" list is called "Permissions for Authenticated Users"). This box will be under the "Allow" column. 7. Check the "Read and Execute" box. This is the box you just unchecked. 8. Click the "Apply" button. 9. Click the "OK" button. 10. You may need to reboot your computer after these changes have been made. Re-execute the application and it should now work. Explanation ----------- If you install Oracle9i Release 2 (9.2.0.1) on a computer running Windows with an NTFS partition, the contents of ORACLE_HOME directory will not be visible to users who are authenticated on that machine. These permissions were not set properly when the software was installed. Applications that were working fine with previous versions of Oracle software will stop working when they upgrade to Oracle 9.2. NOTE: The application will continue to work if the user has logged onto the machine as an Administrator. Any application that is using the Authenticated User privilege will not work. A notable example would be IIS which might service some of the requests based on the Authenticated User privileges. To demonstrate the problem in further detail, you can log on to the operating system as an authenticated machine user. You won't be able browse the contents of the ORACLE_HOME directory demonstrating your inability to load any Oracle DLLs or make a connection. References ---------- Bug:2498880 - Oracle 9I Release 2 Installation Issue on Windows 2000 NTFS File System Additional Search Words ----------------------- OLEDB
整个安装过程一直处于苦思冥想的郁闷状态!
---------------------------------------------------------------------------

       时值今天 ,我们也不得不感谢gene 的那晚苦思冥想的郁闷,正是他一夜的郁闷让我们以后解决这类没头绪的问题变得异常轻松。

       我们的.Net应用绝大多数都是部署在ntfs分区,我们的数据库客户端也大多是Oracle9.2 ,所以这样的问题就屡见不鲜。按照邮件介绍的操作,大多数情况都能解决问题。如果还不行,把用户Aspnet和Internet 来宾用户IUSR_COMPUTERNAME加入Ora92的安全权限里,无法连接的问题就可以解决。从来就是这么简单,一直到上周五。

       上周五某平台测试机部署时同样遇见这个问题,操作系统windows 2003,Oracle客户端9201。用户Aspnet和Interet 来宾用户IUSR_COMPUTERNAME 已经加入Ora92的安全权限里,不行。匿名访问用户赋予管理员权限,还不行。检查system.config,web.config,没发现任何异常。替换oracle本身提供的provider也不行。重启IIS,重启3w服务,重启机器,怎么折腾都不行。真是郁闷古今同啊。最后,已经准备做换机器这样无奈的打算了。还好,在绝望之前又仔细检查了一些细节。

       windows 2000和2003的ASP.NET 的体系结构其实是有结构上的差异的。在 Windows 2000 上,多个 Web 应用程序运行于 ASP.NET 工作进程 (Aspnet_wp.exe) 的单个实例中。每个应用程序驻留在其自己的应用程序域中,该域为托管节点提供一定程度的隔离。而在 Windows Server 2003 上,体系结构发生更改,因为 IIS 6 允许使用多个进程来驻留独立的 Web 应用程序。与 Windows 2000 下的 ASP.NET 体系结构相比,Windows Server 2003 中的ASP.NET 体系结构的主要区别在于可以使用单独的 IIS 工作进程实例 (W3wp.exe) 来驻留 Web 应用程序。默认情况下,所有的应用程序都在默认应用程序池中运行。

       所以,对默认的应用程序池的配置又做了最后一次详细的检查,在默认的应用程序池属性中标识页,发现有一个预定义帐户选项,列出了三个选项:网络服务 (NetworkService)、本地系统 (LocalSystem)、本地服务 (LocalService) 。当前选中的网络服务,而该帐户是这三个帐户权限最低的,将选项改为本地系统,重启IIS,久违的输入框出现了,终于正常连接到数据库。

       总结:如果问题确认出现在环境上,那么就仔细检查每一个细节,以及每一个可能相关的配置项。
分享到:
评论

相关推荐

    ASP.NET WebAPI连接数据库的方法

    *** WebAPI是一种在.NET Framework上构建HTTP服务的强大框架,专为创建RESTful应用程序而设计。这种框架让开发者可以轻松构建可以被多种客户端访问的服务,包括浏览器、移动设备等。在WebAPI的运用中,最常见的需求...

    asp.net与Oracle数据库进行增删改查

    ASP.NET是微软开发的一种用于构建Web应用程序的框架,它提供了丰富的功能和工具,使得开发者能够高效地构建动态网站、Web服务以及Web应用。在与Oracle数据库进行交互时,ASP.NET通常利用ADO.NET(一个.NET Framework...

    c# asp.net 读取 连接oracle数据库源码(不用安装oracle客户端)

    Oracle数据库是一种广泛应用的关系型数据库管理系统,而C#和ASP.NET则是微软.NET框架下用于构建Web应用程序的主要编程语言和平台。本示例"OracleTest"展示了如何在C# ASP.NET环境中,无需安装Oracle客户端就能实现对...

    asp.net 连接oracle数据库方法

    在IT领域,特别是Web开发中,ASP.NET与Oracle数据库的结合是常见的技术组合之一,用于构建功能强大且数据密集型的应用程序。以下是对如何在ASP.NET中连接并操作Oracle数据库的详细解析,涵盖代码示例、关键概念以及...

    用ASP.Net(C#)连接Oracle数据库的方法

    ### 使用ASP.NET (C#) 连接Oracle数据库的方法 #### 概述 在Web开发领域,特别是使用ASP.NET框架时,与各种数据库系统的交互是非常关键的一个环节。本篇文章将详细介绍如何利用C#语言和ASP.NET框架来实现与Oracle...

    C#的.NET网站,怎样用odbc连接oracle数据库

    在.NET应用程序中使用ODBC(Open Database Connectivity,开放式数据库互连)驱动程序连接Oracle数据库是一种常见的解决方案。 #### ODBC简介 ODBC是一个开放标准的应用程序接口(API),它定义了数据库管理系统...

    asp.net连接oracle说明

    ASP.NET 是微软开发的一种用于构建Web应用程序的框架,它提供了丰富的功能和易用性,而Oracle则是一种广泛应用的关系型数据库管理系统。在ASP.NET中连接Oracle数据库可能会遇到一些问题,特别是当系统提示“System....

    ASP.NET Oracle连接字符串

    在实际应用中,连接字符串通常存储在应用程序的配置文件中,例如ASP.NET中的`web.config`文件。这种方式便于管理和维护。 5. **tnsnames.ora 文件** - `tnsnames.ora`文件位于Oracle客户端安装目录下(例如`C:\...

    asp.net配置web.config数据库连接

    以上就是关于ASP.NET配置Web.config数据库连接的基本知识,通过合理的配置和使用,我们可以确保应用安全、高效地与数据库进行通信。在实际项目开发中,务必根据具体需求和环境调整配置,遵循最佳实践。

    .net访问oracle数据库的方法(不安装oracle客户端)

    1. **Web.config文件配置**:对于基于ASP.NET的应用程序,还需要在项目的`Web.config`文件中添加一些特定的配置来支持Oracle数据源。示例如下: ```xml (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)...

    VS.Net2005连接Oracle数据库

    在.NET开发环境中,Visual Studio(VS)是微软提供的一个强大集成开发环境,广泛用于创建Windows桌面应用、Web应用以及移动应用等。VS.NET 2005是该系列的一个版本,它支持多种数据库连接,包括Oracle数据库。Oracle...

    .net连接oracle实例

    而ASP.NET是Microsoft提供的一个用于构建Web应用程序的开发框架,它可以与各种数据库进行集成,包括Oracle。 在"压缩包子文件的文件名称列表"中,我们只看到了"Projects"。这可能表示压缩包内有一个或多个项目文件...

    .net项目管理面板,Oracle数据库的

    1. .NET框架:用于开发Web应用程序的平台,支持C#编程。 2. C#:面向对象的编程语言,常用于.NET项目。 3. Oracle数据库:用于存储和管理项目数据的高性能数据库系统。 4. ADO.NET:.NET框架中的数据访问组件,用于...

    ASP.net 入门级聊天室 oracle数据库

    通过这个项目,开发者可以学习到ASP.NET Web应用的基本开发流程,以及如何与Oracle数据库集成,这对于初学者来说是一次宝贵的经验积累。同时,对数据库的设计和管理、Web服务的构建以及前端交互的实现也是一次全面的...

    Oracle Providers for ASP.NET

    《Oracle Providers for ASP.NET》开发者指南是每一位希望利用Oracle的强大功能提升ASP.NET Web应用性能的开发者的必备读物。无论您是初学者还是有一定经验的专业人士,都能从中获得宝贵的知识和技巧,从而构建出...

    ASP.NET2.0 Web数据库开发教程

    ASP.NET 2.0 Web数据库开发教程是一门深入学习如何在ASP.NET环境中构建与数据库交互的Web应用程序的课程。这门教程可能包含了多种技术、工具和最佳实践,旨在帮助开发者熟练掌握利用ASP.NET 2.0框架进行Web数据库...

    手机报表系统 ASP.net web版

    ASP.NET是微软公司推出的Web应用程序开发框架,它简化了Web应用的构建过程,提供了丰富的控件库、自动处理页面生命周期的机制以及强大的数据绑定能力。在手机报表系统中,ASP.NET发挥了其高效、稳定的特性,为开发者...

    mysql .net 连接驱动

    此库主要用于ASP.NET Web应用程序,提供了集成到IIS(Internet Information Services)的便捷功能,例如角色和成员资格提供程序。这些服务允许Web应用进行用户身份验证、授权管理以及与MySQL数据库中的用户账户和...

    ADO.NET EF+Oracle的WEB服务器配置

    EFOracleProvider.dll是用于连接Oracle数据库的EF提供者,通常需要通过编译源代码或利用已有的VS2008环境来获取。 3. **配置machine.config**:在`C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine....

Global site tag (gtag.js) - Google Analytics