Jacek Filut

Jacek Filut
Projektant/Programis
ta, Primesoft Polska
Sp. z o.o.

Temat: [C#/VS2010] Połączenie ORACLE poprzez WebService na win7...

Tematyka problemu jest połączenie się z aplikacji WebServices (VS2010/C#) do serwera bazodanowego ORACLE.

Napotkane błędu:
- ORA-06413: Connection not open.
- Nastąpiła próba odczytu lub zapisu pamięci chronionej. Często wskazuje to, że inna pamięć jest uszkodzona.
- System.Exception: OCIEnvCreate failed with return code -1

Po ciężkich bojach uzyskałem następujące rozwiązanie:
1) Instalacja klienta ORACLE 10g - Oracle Database 10g Express Edition Release 10.2.0.1.0
- domyślna ścieżka instalacji to "C:\XEClient"
2) Aktualizacja zmiennych środowiskowych:
- Menu start/Mój komputer/Właściwości/Nazwa komputera, domena i ustawienia grupy roboczej - "Zmień ustawienia". Wymagane uprawnienia administratora
- Właściwości systemu/Zaawansowane/Zmienne środowiskowe/Zmienne systemowe
- Weryfikacji zmiennej PATH, gdzie powinna rozpoczynać się "C:\XEClient\bin\;C:\Oracle\11.2.0\client_1...."
- Dodanie nowej zmiennej systemowej o nazwie: ORACLE_HOME i wartości: "C:\XEClient\bin\"
- w moim przypadku WYMAGANY BYŁ RESTART KOMPUTERA
3) Nadanie uprawnień na katalogu XEClient:
- Prawym klawiszy myszy na katalogu/właściwości
- Właściwości: XEClient/Zabezpieczenia/Edytuj nazwy grup lub użytkowników
- Dla wszystkich użytkowników wykonanie odznaczenia i zaznaczenia opicji (taki refresh) "Odczytu i wykonanie" (Wymagane uprawnienia administratora).
- Właściwości: XEClient/Zabezpieczenia/Zaawansowane/Zmień uprawnienia (Wymagane uprawnienia administratora). Dla wszystkich zaznacz opcję "Zastąp wszystkie uprawnienia obiektów podrzędnych uprawnieniami dziedziczonymi z tego obiektu"
- w moim przypadku WYMAGANY BYŁ RESTART KOMPUTERA
4) Utworzenie kopii ścieżki katalogów oraz z ich zawartością:
- z "C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0"
- do "C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0"
Zabieg ma na celu usunięcie z ścieżki wartości: (x86)
5) Następnie uruchomienie lokalnego serwera:
Pierwsza:
- z powyższej nowo utworzonej lokalizacji uruchomienia: WebDev.WebServer20.EXE/WebDev.WebServer40.EXE.
- Menu start/Uruchom/CMD
- CD "C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0" - ENTER
- WebDev.WebServer40.EXE /port:1234 /path:"ŚCIEŻKA DO PROJEKTU WS, KTÓRY BĘDZIE URUCHAMIANY (gdzie znajduje się plik *.asmx)"
Druga opcja:
- utworzenie pliku: LocalHostWSASP.NET.bat
- edycja pliku i wprowadzenia następujących lini:
* cd "C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0"
* start WebDev.WebServer40.EXE /port:1234 /path:"ŚCIEŻKA DO PROJEKTU WS, KTÓRY BĘDZIE URUCHAMIANY (gdzie znajduje się plik *.asmx)"
- zapisz i uruchom
6) Po wykonaniu powyższego punktu 5, należy zmienić ustawiania projektu
- Uruchomienie projektu WebService.sln
- Solution Explorer/Solution "WebService"/Properties/Configuration - dla projektu WebService ustawić Platformę x86.
- Następnie Solution Explorer/"WebService"/Properties/Web
- Use Custom Web Server/Server URL: - wprowadzić adres serwera, który został uruchomiony w powyższym 5 punkcie

Dla każdorazowego uruchamiania, testowania oprogramowaniaych operacji na połączeniu z bazą ORACLE na systemie win7 (64bit) wymagane jest uruchmienie serwera i ustawienie konfiguracji VS.

Rozwiązanie opracowano na podstawie:
Text nr 1: Change launch path of Visual Studio 2010 Web Server

How I can tell Visual Studio 2010 to launch built in web server from a different location. Is there a registry settings somewhere that I can modify or some how change the Debug -> Start Debugging menu item command?

From C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer20.exe
To C:\Program Files\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer20.exe

---------

If you've facing the problem in connection with Oracle integration with ASP.NET in Windows 7 64 bits, then relax... XD
That's the solution (I'm using Visual Studio 2010 32 bits):
First of all, follow the steps here:
System.Data.OracleClient requires Oracle client software version 8.1.7

Then apply these steps:
Copy the directory of your webserver (typically in "C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0") to "C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0";

Open cmd, navigate to directory pasted in step 1 and start the web server (in my case "WebDev.WebServer40") pointing to the directory of your project (be careful, because this path cannot contain parenthesis, that causes the Oracle Bug 'ORA-06413: connection not open' as can be see described here);

If you want to debug your application, change the default URL to the URL of your started server in Visual Studio. In Solution Explorer go to your project > right click > properties > web > in "Servers" section select "Use Custom Web Server" and place the URL that your server are running on. After this, start debug and be happy =D

źródło: http://stackoverflow.com/questions/9519070/change-laun...

Text nr 2: System.Data.OracleClient requires Oracle client software version 8.1.7

I have a web site that I developed on Vista using Vb.net9. It makes a connection to Oracle. for the connection I use System.Data.OracleClient. It works fine on my machine, and our test server, but it does not work on the production server. We installed the Oracle Client 11 on the server. The error is System.Data.OracleClient requires Oracle client software version 8.1.7

We've tried, making a console app that opens the connection, connection runs fine, opens, displays a message and all is well there.
Then we make a simple web form, put it in the directory of the program, just a button, opens the connection, try..catch, grabs error, same error.
The console app was running under an Administrator, web site running under iwam. Is it possible that iwam has a different path?

------
I've run into this error dozens of times:

Cause
Security permissions were not properly set when the Oracle client was installed on Windows with NTFS. The result of this is that content of the ORACLE_HOME directory is not visible to Authenticated Users on the machine; this causes an error while the System.Data.OracleClient is communicating with the Oracle Connectivity software from ASP.NET using Authenticated User privileges.

Solution
To fix the problem you have to give the Authenticated Users group privilege to the Oracle Home directory.

Log on to Windows as a user with Administrator privileges.
Start Window Explorer and navigate to the ORACLE_HOME folder.
Choose properties on the ORACLE_HOME folder.
Click the “Security” tab of the “Properties” window.
Click on “Authenticated Users” item in the “Name” list.
Un-check the “Read and Execute” box in the “Permissions” list under the “Allow” column.
Re-check the “Read and Execute” box under the “Allow” column.
Click the “Advanced” button and in the “Permission Entries” verify that “Authenticated Users” are listed with permission = “Read & Execute”, and Apply To = “This folder, subfolders and files”. If not, edit that line and make sure that “Apply To” drop-down box is set to “This folder, subfolders and files”. This should already be set properly but it is important that you verify it.
Click the “Ok” button until you close out all of the security properties windows. The cursor may present the hour glass for a few seconds as it applies the permissions you just changed to all subfolders and files.
Reboot, to assure that the changes have taken effect.

Try your application again.

źródło: http://stackoverflow.com/questions/447983/system-data-...

Spotkaliście się z takim przypadkiem, może macie optymalniejsze rozwiązanie?

Pozdrawiam,
Jacek.Jacek Filut edytował(a) ten post dnia 08.02.13 o godzinie 00:10