2009-05-27 19 views
6

Ho un servizio Web con un metodo con due parametri di stringa. Quando eseguo il debug, posso vedere nel mio metodo di chiamata dove passa due valori stringa nel metodo, ma in realtà il WebMethod ottiene solo null per entrambi i valori. Ecco il codice:WebMethod riceve valori null nei parametri

WebMethod

[WebMethod(Description = "Set username and password for validation purposes.")] 
public void Login(string uname, string pword) 
{ 
    username = uname; 
    password = pword; 
} 

metodo di chiamata

NewsletterEmailSubscribers nes = new NewsletterEmailSubscribers(); 
nes.Login("Username", "Password"); 

Che cosa sto facendo male qui?

--EDIT--

Aggiunta di altro codice.

Il servizio web:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ToolboxItem(false)] 
public class NewsletterEmailSubscribers : WebService 
{ 
    private static string username, password; 

    public NewsletterEmailSubscribers() 
    { 

    } 


    /// <summary> 
    /// Logins the specified username. 
    /// </summary> 
    /// <param name="username">The username.</param> 
    /// <param name="password">The password.</param> 
    [WebMethod(Description = "Set username and password for validation purposes.")] 
    public void Login(string uname, string pword) 
    { 
     username = uname; 
     password = pword; 
    } 

    /// <summary> 
    /// Adds subscriber email account. 
    /// </summary> 
    /// <param name="emailAddress">The email address</param> 
    /// <param name="newsletterType">The newsletter they have signed up to receive</param> 
    /// <param name="validationCode">The validation code</param> 
    [WebMethod(Description = "Initial add of subscriber email address and newsletter signing up for.")] 

    public void AddSubscriber(
     string emailAddress, 
     string newsletterType, 
     string validationCode) 
    { 
     // Check some values 
     //Authenticate user, will throw exception if the user is invalid 

     using (SOAValidation validation = new SOAValidation()) 
     { 
      validation.ValidateConnection(validationCode, username, password, "Full"); 
     } 

     OracleParameterCollection parameters = new OracleParameterCollection(); 
     parameters.AddWithValue("subscriber_email", emailAddress); 
     parameters.AddWithValue("newsletter_type", newsletterType); 
     Database.ExecuteQuery("dw.newsletter_pkg.newsletter_subscriber_add", parameters); 
    } 
} 

pagina web utilizzando il servizio (NewsletterEmailSubscribers)

private void SubmitEmail(string email) 
{ 
    if (ValidateEmail(email)) 
    { 
     try 
     { 
      NewsletterEmailSubscribers nes = new NewsletterEmailSubscribers(); 
      nes.Login("Username", "Password"); 
      string validationCode; 
      using (Cokesbury.RemoteValidation.Validator validator = new Cokesbury.RemoteValidation.Validator()) 
      { 
       validationCode = validator.ValidationCode(System.Configuration.ConfigurationManager.AppSettings["PasswordSalt"].ToString()); 
      } 

      // submit to db 
      nes.AddSubscriber(email, "FICT", validationCode); 
      // Switch to confirm message 
      mvPage.SetActiveView(vwThankYou); 
     } 
     catch (Exception ex) 
     { 
      mvPage.SetActiveView(vwFail); 
      bool rethrow = ExceptionPolicy.HandleException(ex, "Presentation Services Exception Policy"); 
      if (rethrow) 
      { 
       throw (ex); 
      } 
     } 
    } 
    else 
     lblEmailError.Visible = true; 
} 
+0

Puoi pubblicare l'intero codice. Non vedo alcun motivo per cui ciò dovrebbe fallire. –

+0

Ci sono troppe poche informazioni a cui dare risposta. Solo un'ipotesi cieca: prova a rigenerare il tuo proxy client. –

risposta

8

Hai creare questa webservice poi collegarlo al vostro altro codice, o avete progettato il webservice a usa la stessa interfaccia di un'altra?

Ho fatto il secondo una volta e modificato la maiuscola dei parametri nel WebMethod, che mi ha portato a ricevere valori nulli invece dei valori corretti.

+0

E 'stato così, grazie mille. – jhunter

+0

OMG, ho faticato così tante ore, grazie mille! –

0

Mi è successo proprio oggi e alla fine il problema è stato risolto semplicemente aggiornando il servizio (come suggeriva Darin). Quello che è successo è che ho rinominato alcuni parametri nel WebMethod ma il client stava ancora usando il vecchio nome per inviare la richiesta.