2013-08-27 3 views
0

У меня есть веб-сервис, который я использую для сбора некоторой информации из БД. Всего несколько строк в основном. Однако вместо возврата в мою функцию. Я хотел сделать функцию получения, которую я мог бы назвать позже. Однако, после ввода некоторых точек останова, кажется, что переменные, которые я сохранил, становятся нулевыми, как только вызов возвращается из сервисной функции, которая только что вытащила их из БД, в мой основной проект.Могу ли я получить общедоступную переменную из веб-службы?

Очевидно, я не уверен, как работает веб-сервис. Есть ли специальный способ сделать это, например, установить переменную сеанса?

благодаря

[WebMethod] 
    public String getDemogs() 
    { 
     return Demogs; 
    } 



    [WebMethod] 
    public void LoadUserSites(string username, string siteUse) 
    { 
     // Declare the SslConnection class variable. 
     SqlConnection sSitesConn = new SqlConnection(Util.ConStrEpcrProd); 
     SqlCommand sSitesCmd = new SqlCommand(); 
     sSitesCmd.Connection = sSitesConn; 
     SqlDataReader objSitesReader; 

     try 
     { 
      sSitesConn.Open(); 

      if (siteUse == "Main") 
      { 
       sSitesCmd.CommandText = "SELECT AgencyName, Demog FROM dbo.UserAdminPermissions WHERE UserName = '" + username + "'"; 

       objSitesReader = sSitesCmd.ExecuteReader(); 

       // Reset the string... 
       Demogs = string.Empty; 
       Agencies = string.Empty; 

       while (objSitesReader.Read()) 
       { 
        Demogs += objSitesReader["Demog"].ToString() + ","; 
        Agencies += "'" + objSitesReader["AgencyName"].ToString() + "',"; 
       } 



       objSitesReader.Close(); 
       objSitesReader.Dispose(); 
      } 


     finally 
     { 
      sSitesConn.Close(); 
      sSitesConn.Dispose(); 
      sSitesCmd.Dispose(); 
     } 
    } 
+0

Покажите нам какой-то код, ни один здесь не поможет без него. Кроме того, какой веб-сервис? ASMX? ФОС? – Oscar

ответ

0

Demogs не доступен между вызовами, если вы храните его в переменной класса. Вам нужно сохранить его в другом месте (сеанс, где бы он ни был). Вы всегда будете получать новый экземпляр своего класса обслуживания при каждом вызове службы.

+0

ах, хорошо. Могу ли я сделать что-то вроде сеанса ["demogs"] = demogs в моем веб-сервисе? –

+0

Вы можете, да. Если это то, что вы хотите. И затем верните это в 'getDemoGs'. Но, если вам действительно нужны сеансы, и это то, что вы хотите, вам нужно решить для себя. Если вы не хотите использовать сеансы, вы можете, конечно, вернуть «идентификатор запроса» из первого метода (load), а затем использовать его для поиска во втором (get) методе. –

Смежные вопросы