Bonjour,

Je travaille sur une application en C# (ASP.NET MVC) qui nécessite une connexion à une base de donnée Oracle via ODP.NET, afin d'appeler des procédures.

Je ne suis pas très familier avec l'utilisation d'oracle et je suis confronté au problème suivant :

Le code ci-dessous dans un projet "Console", fonctionne parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Text;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Data;
 
namespace testOracleconnection
{
    class Program
    {
        static void Main(string[] args)
        {
            String stringConn = "Data Source=XXXX; User ID=XXXX; Password=XXXXX";
            using (var objConn = new OracleConnection(stringConn))
            {
                using (var objCmd = new OracleCommand())
                {
                    objCmd.Connection = objConn;
                    objCmd.CommandText = "Ma_Procedure";
                    objCmd.CommandType = CommandType.StoredProcedure;
                    //Return parameter need to be the first
                    objCmd.Parameters.Add("returnVal", OracleDbType.Decimal, ParameterDirection.ReturnValue);
                    objCmd.Parameters.Add("name", OracleDbType.Varchar2, 10, "Mon_Nom", ParameterDirection.Input);
 
                    try
                    {
                        objConn.Open();
 
                        objCmd.ExecuteNonQuery();
                        System.Console.WriteLine("Result :{0}", objCmd.Parameters["returnVal"].Value);
                    }
                    catch (Exception e)
                    {                       
                        System.Console.WriteLine("Exception: {0}", e.ToString());
                    }
                    objConn.Close();
                }
            }
                System.Console.ReadLine();
 
        }
    }
}
Mais impossible avec le même code dans un Controller de mon application ASP.NET MVC (ni d'ailleurs dans un projet test WCF), d'établir la connexion avec ma base oracle...(retourne toujours une exception lors du objConn.Open())

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[Authorize]
public ActionResult Ma_Procedure()
        {
            String stringConn = "Data Source=XXXX; User ID=XXXX; Password=XXXXX";
            using (var objConn = new OracleConnection(stringConn))
            {
                using (var objCmd = new OracleCommand())
                {
                    objCmd.Connection = objConn;
                    objCmd.CommandText = "Ma_Procedure";
                    objCmd.CommandType = CommandType.StoredProcedure;
                    //Return parameter need to be the first
                    objCmd.Parameters.Add("returnVal", OracleDbType.Decimal, ParameterDirection.ReturnValue);
                    objCmd.Parameters.Add("name", OracleDbType.Varchar2, 10, "Mon_Nom", ParameterDirection.Input);
 
                    try
                    {
                        objConn.Open();
 
                        objCmd.ExecuteNonQuery();
                        resultat = float.Parse(objCmd.Parameters["returnVal"].Value.ToString());
                    }
                    catch (Exception e)
                    {                       
 
                    }
                    objConn.Close();
                    ViewBag.Result = resultat;
                }
            } 
            }
 
            return PartialView();
        }
J'ai bien les mêmes using et référence dans les deux cas... j'avoue être à court d'idée ...

L'un d'entre vous voit-il le problème ?

Merci !