2016-04-08 17 views
0

ASP.NET kullanarak bir API üzerinde çalışıyorum. Bir noktada, diğerini aramak için bir yönteme ihtiyacım var. Bu kullanımı saklı prosedürlerin her ikisi de:HTTP 500: SQL bağlantı dizesi hataya neden oluyor

public async Task<IHttpActionResult> GetTeamById(string TeamId) 
{  
     DataTable Result = new DataTable(); 

     SqlCommand Command = new SqlCommand("GetTeam", ConnectionString); 
     Command.CommandType = CommandType.StoredProcedure; 
     Command.Parameters.AddWithValue("@TeamId", TeamId); 

     using (ConnectionString) /defined above 
     { 
      try 
      {  
       ConnectionString.Open(); 

       using (SqlDataReader DataReader = Command.ExecuteReader()) 
       { 
        Result.Load(DataReader); 
        return Ok(Result); 
       } 
      } 
      catch 
      { 
       return InternalServerError(); 
      } 
     } 
    } 

    public async Task<IHttpActionResult> UpdateTeam(string TeamId) 
    { 
     SqlCommand Command = new SqlCommand("UpdateTeam", ConnectionString); 
     Command.CommandType = CommandType.StoredProcedure;    
     Command.Parameters.AddWithValue("@Id", TeamId); 

     using (ConnectionString) 
     { 
      try 
      { 
       ConnectionString.Open(); 

       int returnvalue = (int) Command.ExecuteScalar();    

       if (returnvalue == 1) 
        return BadRequest(); 
       else 
        await GetTeamById(TeamId); 
      } 
      catch 
      { 
       return InternalServerError(); 
      } 
     }     
    } 

I yüz sorun UpdateTeam yöntemi olarak adlandırılır, bu kod, bir 500 iç sunucu hata atar olmasıdır. Sorun, GetTeamById işlevindeki ConnectionString.Open() satırında gerçekleştiğini anladım.

Bunun bağlantının hala açılmasından kaynaklanmış olabileceğini düşündüm. Ama neden sadece using() kullanıyor? Bu problemi nasıl çözebilirim?

Desteğiniz için teşekkürler!

i bir prosedür bağlandığınızda hep bu standart takip
+0

neden (var dbAbel_Reporting = new Abel_ReportingPortalEntities()) { – Bharat

+0

gibi connestionstring kullanmak kalmayacağı gibi bunun yeni örneğini oluştur .. – Bharat

+0

yani var içine kullanmak kullanarak bu – Bharat

cevap

2

:

using (var conn = new SqlConnection(connectionString)) 
using (var command = new SqlCommand("ProcedureName", conn) { 
          CommandType = CommandType.StoredProcedure }) { 
    conn.Open(); 
    command.ExecuteNonQuery(); 
    conn.Close(); 
} 
+0

Tamam, teşekkür ederim! Uygulamalı ve sadece amaçlandığı gibi çalışır :) –

İlgili konular