0

現在、Postman 拡張機能を使用して Google Chrome で POST メソッドをテストしているテスト API を実行しています。ローカル サーバーにデータベースがあり、フレームワーク 4.0 で VS2010 を使用しています。

私のAPIには現在、GetByIDメソッドが完全に機能しています。

それらはすべて、リクエストごとに新しいデータを送信する前にデータをクリアしますが、POST リクエストを行うとこれは起こりません。

リクエストを行うたびに、以前の結果がそこに残ります(リクエストのパラメーターを変更すると、結果の数は同じままですが、データは変更されます)。

private List<Employee> Employees = new List<Employee>();

SqlConnection con;
SqlDataAdapter da;
DataSet ds = new DataSet();

public IEnumerable<Employee> Post(string param1, string param2)
{
    ds.Clear();
    con = new SqlConnection("Server=xxxx; Database=x; Trusted_Connection=True;");
    da = new SqlDataAdapter("select * from Employee", con);           
    da.Fill(ds);

    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        Employees.Add(new Employee() { 
                          FirstName = dr[0].ToString(), 
                          LastName = dr[1].ToString(), 
                          Id = int.Parse(dr[2].ToString()), 
                          Designation = dr[3].ToString() 
                     });

    }

    return Employees.Where(e => e.FirstName == param1)
                    .Where(e => e.LastName == param2);
}

私の従業員コントローラー

static readonly EmployeeDetails repository = new EmployeeDetails();

[System.Web.Mvc.HttpPost]
public IEnumerable<Employee> Search(string param1, string param2)
{
    //Employee search = repository.Post(param1, param2);
    IEnumerable<Employee> search = repository.Post(param1, param2);
    if (search == null)
    {
        throw new HttpResponseException(HttpStatusCode.NotFound);
    }

    return search;
}

私はこれで丸一日遊んでいますが、問題の解決策は見つかりませんでした。誰でも助けることができますか?

ありがとうございました

4

2 に答える 2

0

わかりました、これは私がstackoverflowに投稿する2番目の質問です。答えは非常に単純で、本当にばかげています。

変数 Employees はグローバルなものであり、従業員を再度呼び出すたびにデータセットのみをクリーニングしていました。

Employees.Clear(); を追加する必要がありました。

時間を無駄にして申し訳ありません:p

于 2014-03-27T12:37:33.417 に答える
0

キャッシュが post メソッドにこの属性を追加しようとしたことが原因である可能性があります

[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]
于 2014-03-26T10:48:13.403 に答える