C# 传递给web api的模型为空

C# 传递给web api的模型为空,c#,asp.net-web-api,asp.net-mvc-5,restsharp,C#,Asp.net Web Api,Asp.net Mvc 5,Restsharp,在用户输入其登录详细信息后,我的控制器中有以下代码行 var userProfile = UserService.UserLogin(userLogin); 它调用一个静态类,在调用外部Web API时引用该类 public static UserProfile UserLogin(UserLogin userLogin) { var client = new RestClient(Url); var request = new RestReques

在用户输入其登录详细信息后,我的控制器中有以下代码行

var userProfile = UserService.UserLogin(userLogin);
它调用一个静态类,在调用外部Web API时引用该类

  public static UserProfile UserLogin(UserLogin userLogin)
    {
        var client = new RestClient(Url);
        var request = new RestRequest("api/UserLoginApi/", Method.GET) { RequestFormat = DataFormat.Json };
        request.AddBody(userLogin);

        var response = client.Execute(request);

        var userProfile = JsonConvert.DeserializeObjectAsync<UserProfile>(response.Content).Result;

        return userProfile;
    }
但是当我在Web Api中检查userLogin中的值时,它们是空的吗

现在通过控制器,userLogin有我输入的电子邮件地址和密码,进入UserService。再次登录,当它到达时,值仍然存在

var response = client.Execute(request); 
我展开请求,看到参数的计数为1,但当它到达Web Api中的断点时,userLogin是否为空

我也在UserService.Login中尝试过这个

        request.AddBody(new UserLogin
        {
            EmailAddress = userLogin.EmailAddress,
            Password = userLogin.Password
        });

但我还是不走运,我这里做错了什么?

我建议,当您使用FromBody时,必须使用Post方法发送数据

var request = new RestRequest("api/UserLoginApi/", Method.POST) { RequestFormat = DataFormat.Json };
按照你的方法

public UserProfile Get([FromBody] UserLogin userLogin)
{
 UserProfile userProfile;    
 return userProfile;
}
您的控制器操作是Get方法,当您使用Url-api/UserLoginApi/and-Get方法请求时,它将调用上述方法,如果您按照我的建议更改post,那么您也必须更改控制器方法名称,如果您不想这样做,那么请像这样更新控制器操作

public UserProfile Get([FromUri] UserLogin userLogin)
     {
        UserProfile userProfile;    
         return userProfile;
     }
public static UserProfile UserLogin(UserLogin userLogin)
    {
        var client = new RestClient(Url);
        var request = new RestRequest("api/UserLoginApi/", Method.POST) { RequestFormat = DataFormat.Json };
        request.AddBody(userLogin);

        var response = client.Execute(request);

        var userProfile = JsonConvert.DeserializeObjectAsync<UserProfile>(response.Content).Result;

        return userProfile;
    }  
用下面的东西打电话

 public static UserProfile UserLogin(UserLogin userLogin)
    {
        var client = new RestClient(Url);
        var request = new RestRequest("api/UserLoginApi/", Method.GET) { RequestFormat = DataFormat.Json };
        request.AddQueryParameter("EmailAddress", userLogin.EmailAddress);
        request.AddQueryParameter("Password", userLogin.Password);    
        var response = client.Execute(request);    
        var userProfile = JsonConvert.DeserializeObjectAsync<UserProfile>response.Content).Result;    
        return userProfile;
    }
你应该这样打电话

public UserProfile Get([FromUri] UserLogin userLogin)
     {
        UserProfile userProfile;    
         return userProfile;
     }
public static UserProfile UserLogin(UserLogin userLogin)
    {
        var client = new RestClient(Url);
        var request = new RestRequest("api/UserLoginApi/", Method.POST) { RequestFormat = DataFormat.Json };
        request.AddBody(userLogin);

        var response = client.Execute(request);

        var userProfile = JsonConvert.DeserializeObjectAsync<UserProfile>(response.Content).Result;

        return userProfile;
    }  
publicstaticuserprofile-UserLogin(UserLogin-UserLogin)
{
var client=新的RestClient(Url);
var request=new RestRequest(“api/UserLoginApi/”,Method.POST){RequestFormat=DataFormat.Json};
AddBody(userLogin);
var response=client.Execute(请求);
var userProfile=JsonConvert.DeserializeObjectAsync(response.Content).Result;
返回userProfile;
}  

它适用于我
request.AddObject(userLogin)