2009-05-27 10 views
6

2つの文字列パラメータを持つメソッドを持つWebサービスがあります。私がデバッグしているとき、私はメソッドに2つの文字列値を渡す私の呼び出しメソッドで見ることができますが、実際にWebMethodは両方の値のnullを取得します。私はここで間違ってやっている何を方法WebMethodはパラメータでnullを受け取ります

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

を呼び出す

WebMethod属性

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

:ここではいくつかのコードですか?

--EDIT_

コードを追加しています。

ウェブサービス:サービス(NewsletterEmailSubscribers)を使用して

[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); 
    } 
} 

は、ウェブページ

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

コード全体を投稿できますか?それが失敗する理由は見当たらない。 –

+0

回答が得られる情報が少なすぎます。あなたのクライアントプロキシを再生成してみてください。 –

答えて

8

あなたが他のコードにそれをフックし、このWebサービスを作成しました、またはあなたがWebサービスを設計しています別のインタフェースと同じインタフェースを使用しますか?

私はかつて、後者を行なったし、代わりに正しい値をnullに受け、私につながるWebメソッドのパラメータの大文字小文字を変更しました。

+0

それは、ありがとう、束だった。 – jhunter

+0

OMG、私はそれほど多くの時間、多くのおかげでそれと苦労した! –

0

それはちょうど今日、私に起こった(ダーリンが示唆したように)最後に問題は単にサービスを更新することで解決しました。何が起こったのかは、WebMethodのいくつかのパラメータの名前を変更したが、依然としてクライアントがリクエストを送信するために古い名前を使用していたことでした。

関連する問題