我现在遇到通过提琴手发布记录的问题。我的代码如下:
[HttpPost]
public void AddStudent(Student s)
{
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = @"Data Source=PALLAVI-PC\SQLEXPRESS;Initial Catalog=StudentDB;Integrated Security=True;MultipleActiveResultSets=True;";
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "INSERT INTO Tbl_Students (Roll_Number,FirstName,LastName,Class,Gender) Values (@Roll_Number,@FirstName,@LastName,@Class,@Gender)";
sqlCmd.Connection = myConnection;
sqlCmd.Parameters.AddWithValue("@Roll_Number", s.Roll_Number);
sqlCmd.Parameters.AddWithValue("@FirstName", s.FirstName);
sqlCmd.Parameters.AddWithValue("@LastName", s.LastName);
sqlCmd.Parameters.AddWithValue("@Class", s.Class);
sqlCmd.Parameters.AddWithValue("@Gender", s.Gender);
myConnection.Open();
int rowInserted = sqlCmd.ExecuteNonQuery();
myConnection.Close();
}
当我在fiddler上运行时,我得到一个NullException。响应正文不会被代码排除在外。响应主体采用JSON格式。图片如下:
修改 这是我得到的错误(图片)。
答案 0 :(得分:2)
我也会在Fiddler中设置Content-Type标头
Content-Type:application / json
答案 1 :(得分:1)
要强制Web API从请求正文中读取简单类型,请将[FromBody]
属性添加到参数中:
public void AddStudent([FromBody]Student s)
在此示例中,Web API将使用媒体类型格式化程序从请求正文中读取name的值。这是一个示例客户端请求。
POST http://localhost:5076/api/values HTTP/1.1
User-Agent: Fiddler
Host: localhost:5076
Content-Type: application/json
Content-Length: 7
"{Students}"
当参数具有[FromBody]
时,Web API使用Content-Type标头选择格式化程序。在这个例子中,内容类型是" application / json"并且请求主体是原始JSON字符串(不是JSON对象)。