Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DeleteAsync和PostAsync不工作_C#_Mvvm_Async Await_Mvvm Light - Fatal编程技术网

C# DeleteAsync和PostAsync不工作

C# DeleteAsync和PostAsync不工作,c#,mvvm,async-await,mvvm-light,C#,Mvvm,Async Await,Mvvm Light,我编写了这个工作PutAsync,它允许我更新数据库中的项目: private async void Edit() { using (HttpClient client = new HttpClient()) { Item i = new Item(); i.ID = SelectedItem.ID; i.Name = SelectedItem.Name; i.Cost = SelectedItem.Cost;

我编写了这个工作PutAsync,它允许我更新数据库中的项目:

private async void Edit()
{
    using (HttpClient client = new HttpClient())
    {
        Item i = new Item();
        i.ID = SelectedItem.ID;
        i.Name = SelectedItem.Name;
        i.Cost = SelectedItem.Cost;

        string json = JsonConvert.SerializeObject(i);

        HttpResponseMessage response = await client.PutAsync("http://localhost:5065/api/item", new StringContent(json, Encoding.UTF8, "application/json"));
        if (response.IsSuccessStatusCode)
        {
            string jsonresponse = await response.Content.ReadAsStringAsync();
            int result = JsonConvert.DeserializeObject<int>(jsonresponse);
            if (result == 2)
            {
                GetItems();
            }
        }
    }
}
我做错了什么?我怎样才能使我的帖子和删除都起作用

编辑: 下面是Delete void的一些服务器端代码,非常基本:

public static int DeleteItem(int id)
        {
            int rowsaffected = 0;
            DbTransaction trans = null;

            try
            {
                trans = Database.BeginTransaction("ConnectionString");

                string sql = "DELETE FROM Item WHERE ID=@ID";
                DbParameter par1 = Database.AddParameter("ConnectionString", "@ID", id);
                rowsaffected += Database.ModifyData(trans, sql, par1);

                trans.Commit();
            }
            catch (Exception ex)
            {
                if (trans != null)
                    trans.Rollback();
            }
            finally
            {
                if (trans != null)
                    Database.ReleaseConnection(trans.Connection);
            }

            return rowsaffected;
        }
我称之为:

   // DELETE: api/Item/5
        public void Delete(int id)
        {
            ItemDataAccess.DeleteItem(id);
        }
编辑: 也许在下一行有一些额外的信息

int result = JsonConvert.DeserializeObject<int>(jsonresponse);

您的呼叫成功,204是一个成功代码,它告诉客户机不要期望身体中有任何数据。您没有从消息中返回任何内容,因此服务器会自动填写204,以便在Controller方法上键入
void

您需要显示如何调用这些方法
async void
方法只能在非常特定的情况下使用(例如,事件处理程序)。如果您通过
PostMan
或其他REST客户端向服务器发送删除,该方法是否有效?换句话说,你确定你的服务器处理的请求正确吗?你的服务器端代码是什么?当你调试你的服务器时,你实际上是在输入你的代码,还是在管道的早期失败了。@SteveMitcham我正在输入代码,然后我得到一个204,没有任何变化我不知道是不是这样,我已尝试将其设置为
public int Delete(int id){return ItemDataAccess.deleteim(id);}
但它仍然没有改变我数据库中的任何内容,我仍然得到204 No Content响应,但如果要返回值,请检查这个问题,它可能最终会重复:
public static int DeleteItem(int id)
        {
            int rowsaffected = 0;
            DbTransaction trans = null;

            try
            {
                trans = Database.BeginTransaction("ConnectionString");

                string sql = "DELETE FROM Item WHERE ID=@ID";
                DbParameter par1 = Database.AddParameter("ConnectionString", "@ID", id);
                rowsaffected += Database.ModifyData(trans, sql, par1);

                trans.Commit();
            }
            catch (Exception ex)
            {
                if (trans != null)
                    trans.Rollback();
            }
            finally
            {
                if (trans != null)
                    Database.ReleaseConnection(trans.Connection);
            }

            return rowsaffected;
        }
   // DELETE: api/Item/5
        public void Delete(int id)
        {
            ItemDataAccess.DeleteItem(id);
        }
int result = JsonConvert.DeserializeObject<int>(jsonresponse);
A first chance exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll

Additional information: No JSON content found and type 'System.Int32' is not nullable. Path '', line 0, position 0.