2016-07-29 12 views
-1

ich eine Web-API erschaffe und versuchen, die Verbindungszeichenfolge in der web.config-Datei erstellt haben, wieVerbindungszeichenfolge in der Datei web.config

<connectionStrings> 
    <add name="ProConnection" connectionString="Data Source=J;User ID=T;Password=C;pooling=true;min pool size=5;Max Pool Size=60" providerName="Oracle.DataAccess.Client"/> 
    <connectionStrings> 

So kann ich die Verbindungszeichenfolge verschlüsseln aspnet_regiis.exe mit . So in der Steuerung verwende ich den Code unten, wo dbconn die Details Verbindung hält

public HttpResponseMessage Getdetails([FromUri] string[] id) 
    { 
    string dbconn = ConfigurationManager.ConnectionStrings["ProConnection"].ConnectionString; 
     { 
      var inconditions = id.Distinct().ToArray(); 
      var srtcon = string.Join(",", inconditions); 
      DataSet userDataset = new DataSet(); 
      var strQuery = @"SELECT * from STCD_PRIO_CATEGORY_DESCR where STCD_PRIO_CATEGORY_DESCR.STD_REF IN (" + srtcon + ")"; 
      OracleCommand selectCommand = new OracleCommand(strQuery, dbconn); 
      OracleDataAdapter adapter = new OracleDataAdapter(selectCommand); 
      DataTable selectResults = new DataTable(); 
      adapter.Fill(selectResults); 
      string result = JsonConvert.SerializeObject(selectResults); 
      string contentDisposition = "inline; filename=abc.json"; 
      HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, result,  MediaTypeHeaderValue.Parse("application/json")); 
      response.Content.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse(contentDisposition); 
      return response; 
     } 
    } 

Aber ich bin immer Fehler in der enter image description here

+0

Ihre ora conn Zeichenfolge scheint nicht korrekt -> www.connectionstrings.com –

+0

Dies ist eine seltsame Syntax 'string dbconn = ConfigurationManager ... ConnectionString; {' – Sherlock

Antwort

1

Sie versuchen, Ihre Verbindungszeichenfolge direkt im OracleCommand eher zu benutzen als ein OracleConnection damit die Erstellung und Weitergabe, die zu Ihrem OracleCommand statt:

public HttpResponseMessage Getdetails([FromUri] string[] id) 
{ 
    var connectionStringSection = ConfigurationManager.ConnectionStrings["ProConnection"]; 
    string connectionString = connectionStringSection.ConnectionString; 
    using (OracleConnection dbConn = new OracleConnection(connectionString)) 
    { 
     var inconditions = id.Distinct().ToArray(); 
     var srtcon = string.Join(",", inconditions); 
     DataSet userDataset = new DataSet(); 
     var strQuery = @"SELECT * from STCD_PRIO_CATEGORY_DESCR where STCD_PRIO_CATEGORY_DESCR.STD_REF IN (" + srtcon + ")"; 
     using (OracleCommand selectCommand = new OracleCommand(strQuery, dbConn)) 
     { 
      using (OracleDataAdapter adapter = new OracleDataAdapter(selectCommand)) 
      { 
       DataTable selectResults = new DataTable(); 
       adapter.Fill(selectResults); 
       string result = JsonConvert.SerializeObject(selectResults); 
       string contentDisposition = "inline; filename=abc.json"; 
       HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, result,   MediaTypeHeaderValue.Parse("application/json")); 
       response.Content.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse(contentDisposition); 
       return response; 
      } 
     } 
    } 
} 

Es ist erwähnenswert, dass Sie verwenden sollten using Aussagen rund um Ihre OracleConnection/Command/DataAdapters oder Sie riskieren Speicherlecks.

+0

Dies ist der richtige Weg, es zu tun :) und +1 für die Betonung 'using', weil alle Transaktionen Rollback, wenn es fehlschlägt – Sherlock

+1

@Sherlock danke für die Bearbeitung. Nervtötende Handy verschraubt die Formatierung :( –

+0

@Daen Ward Der Fehler ging weg mit der 'Verwendung', aber ich bekomme den Fehler, wenn ich die Anwendung ausführen als {"Objektreferenz nicht auf eine Instanz eines Objekts festgelegt."} In der connectionString – trx

0

Versuchen Sie, diese eine Zeichenfolge zu machen:

var strQuery = @"SELECT * from STCD_PRIO_CATEGORY_DESCR where STCD_PRIO_CATEGORY_DESCR.STD_REF IN (" + srtcon + ")"; 
      OracleCommand selectCommand = new OracleCommand(strQuery, dbconn); 

zu:

String strQuery = @"SELECT * from STCD_PRIO_CATEGORY_DESCR where STCD_PRIO_CATEGORY_DESCR.STD_REF IN (" + srtcon + ")"; 
      OracleCommand selectCommand = new OracleCommand(strQuery, dbconn); 

Versuchen Sie auch dies:

dbconn.Open(); 
OracleCommand selectCommand = new OracleCommand(); 
selectCommand = dbconn.CreateCommand(); 
selectCommand = new OracleCommand (strQuery, dbconn); 
+0

Ich bekomme den gleichen Fehler in der OrcaleCommand-Anweisung. – trx

Verwandte Themen