1

私はWCFアプリケーションに取り組んでおり、この操作を呼び出しています

[ServiceContract]
public interface IAuditDataService
{

    [OperationContract(Name = "UserAuthentication")]
    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "/UserAuthentication?username={username}")]
    string UserAuthentication(string username, UserData userInfo); 

}

エラーが発生しています

"Object Reference not set to an instance"

ここ

public string UserAuthentication(string username, UserData userInfo)
 {
  string outputData = string.Empty;
  return userInfo.ToString(); // << Error at this line 
 }

これがJSONクラスです

[DataContract]
[Serializable()]
public class UserData
{
    [DataMember(Name = "UserName", Order = 1)]
    public string UserName { get; set; }

    [DataMember(Name = "Password", Order = 2)]
    public string Password { get; set; }

    [DataMember(Name = "Token", Order = 3)]
    public string Token { get; set; }
}

POST メソッドによる JSON リクエストは次のとおりです。

{"UserName":"abcd",
"Password":"1234",
"Token":"1234"}

これが応答のスクリーンショットですここに画像の説明を入力

どんな助けでも!

4

2 に答える 2

4

属性のBodyStyleプロパティは[WebInvoke]スタイルを指定しますWrappedRequest。つまり、入力として渡すオブジェクトは、Steve Wilkes が述べたように、メンバー名がプロパティ名と同じオブジェクトにラップする必要があります。

別の方法として、BodyStyleBare;に変更することもできます。この場合、入力は問題なく機能するはずです。つまり、これが操作宣言である場合、質問に入力した内容は機能するはずです。

[OperationContract(Name = "UserAuthentication")]
[WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare,
           UriTemplate = "/UserAuthentication?username={username}")]
string UserAuthentication(string username, UserData userInfo); 
于 2013-05-15T16:21:30.880 に答える