现在我正在做一个测试API,我使用邮差扩展来测试谷歌chrome上的POST方法。我有一个数据库在我的本地服务器,我使用VS2010与框架4.0。
我的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);
}
My employee controller
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;
}
我已经玩了一整天了,没有找到任何解决问题的方法。有人能帮忙吗?
谢谢
可能是因为Cache试图在post方法上添加此属性
[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]
好了,伙计们,这是我在stackoverflow上发布的第二个问题,答案很简单,也很愚蠢。
变量Employees是一个全局变量,每次它调用Employees时,我都不清理它,而是只清理数据集。
我只需要添加Employees.Clear();
p