【问题标题】:POST GetAll Method doesn't clear data from previous requestPOST GetAll 方法不会清除先前请求中的数据
【发布时间】:2014-05-04 16:48:30
【问题描述】:

现在我正在做一个测试 API,我正在使用 Postman 扩展来测试 google chrome 上的 POST 方法。 我的本地服务器中有一个数据库,我正在使用带有框架 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;
}

我已经玩了一整天了,但没有找到任何解决问题的方法。 有人可以帮忙吗?

谢谢

【问题讨论】:

  • 您使用的是 Web API 还是 MVC?
  • 使用 asp net mvc 4 web 应用程序创建项目,而不是选择 web api
  • 在这种情况下,您应该使用 System.Web.Http.HttpPost 属性,而不是 MVC 属性。
  • 一条与您的帖子无关的注释。最好写一个 where caluse 而不是两个: Where(e=>e.FirstName==param1 && e.LastName==param2)。
  • Christos 我试过了不接受我真的需要添加另一个.Where

标签: c# asp.net api postman


【解决方案1】:

可能是因为 Cache 尝试在 post 方法上添加这个属性

[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]

【讨论】:

  • 将 mvc 更改为 http 并添加了这个,每次请求 POST 方法时仍然不断堆积结果:\ 它可能与数据集有关,但我找不到任何清理它的方法:\
  • 好吧,伙计们,这是我在 stackoverflow 上发布的第二个问题,答案很简单而且很愚蠢。变量Employees是一个全局变量,我没有清理它,我只清理数据集,每次它再次调用员工时。我只需要添加Employees.Clear();很抱歉浪费了时间:p
【解决方案2】:

好吧,伙计们,这是我在 stackoverflow 上发布的第二个问题,而且答案很简单而且很愚蠢。

Employees 变量是一个全局变量,我没有清理它,我只清理数据集,每次它再次调用雇员时。

我只需要添加Employees.Clear();

对不起,浪费了时间:p

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2014-10-17
    • 2014-01-26
    • 2014-08-30
    • 1970-01-01
    相关资源
    最近更新 更多