无法通过提琴手发布新唱片

时间:2015-12-01 16:45:26

标签: c# asp.net sql-server asp.net-web-api2 fiddler

我现在遇到通过提琴手发布记录的问题。我的代码如下:

[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格式。图片如下:

enter image description here

修改 这是我得到的错误(图片)。

enter image description here

2 个答案:

答案 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对象)。