C# Json web服务-值为NULL

C# Json web服务-值为NULL,c#,json,web-services,C#,Json,Web Services,我有一个具有以下定义的c web服务: [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "BCryptLogin")] LoginRespons

我有一个具有以下定义的c web服务:

    [WebInvoke(Method = "POST",
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "BCryptLogin")]
    LoginResponse BCryptLogin(LoginData logindata);
实际功能是

    public LoginResponse BCryptLogin(LoginData logindata)
    {
        string login = logindata.login;
        string password = logindata.password;

        // code be here
    }
尝试访问logindata.login时,我收到一个NullReferenceException:

这是我第一次尝试POST web服务,但我完全不知道:出了什么问题

我的测试请求如下所示:

{"login":"username","password":"password"}
[DataContract]
public class LoginData
{
    [DataMember]
    public string login { get; set; }
    [DataMember]
    public string password { get; set; }
}
也试过

{"LoginData":{"login":"username","password":"password"}}
LoginData对象的定义如下:

{"login":"username","password":"password"}
[DataContract]
public class LoginData
{
    [DataMember]
    public string login { get; set; }
    [DataMember]
    public string password { get; set; }
}

函数需要一个对象,但需要传递两个值

{"login":"username","password":"password"}
您需要在JavaScript中创建一个对象并将其传递给您的函数

var LoginData = {};
LoginData.login = "username";
LoginData.password = "password";
然后使用以下语法将此对象传递给JSON请求中的方法

var jsonRequest = {logindata: LoginData};
注意:方法logindata上的参数名在JSON调用中必须相同,区分大小写

我建议您使用将对象转换为有效的JSON请求

JSON.stringify(jsonRequest);

第74行是什么?cs:第74行附加一个调试器并查看空值。添加跟踪,使用fiddler。您是否已查看logindata是否为null?听起来您的logindata对象为null。bryanmac:74行是string login=logindata.login;post_erasmus,makp3rry:是的,logindata看起来是空的。我不知道为什么=我没有使用JavaScript,目前我正在使用RESTClient手工制作请求。我也尝试了{loginda:{login:username,password:password}},没有效果。LoginData仍然为空。明白了,你仍然应该传递一个对象。。。到目前为止,您还没有像方法所期望的那样传递logindata参数。此外,您的对象LoginData还应该应用元属性[DataContract]。那么,作为JSON,正确的LoginData对象是什么样的呢?我的LoginData对象确实有DataContract属性,只是没有正确地复制粘贴:p更改LoginData的大小写:{LoginData:{login:username,password:password}}