1
我有一个数据库,持有不同的山脉,并在我的网络Api我试图记录IP地址,时间和日期和“计数”一个特定的山已被访问多少次。如果用户导航到api/Mountains/1
那么它应该记录该IP地址,日期时间和该特定的mountain.name
的计数。但我有点迷失在逻辑中,我不知道如何计算每个单独的山峰?我不存储这些信息,所以我希望它可以保存在内存中。Webapi计数特定的获取请求
编辑:(从答案已更新)
public class MountainsController : ApiController
{
private MountainContext db = new MountainContext();
private int Count;
static Dictionary<int, string> data;
static Dictionary<int, int> dataCounter;
static MountainsController()
{
data = Enumerable.Range(1, 10).ToDictionary(i => i, i => "Mountain " + i.ToString());
dataCounter = Enumerable.Range(1, 10).ToDictionary(i => i, i => 0);
}
// GET: api/Mountains/5
[ResponseType(typeof(Mountain))]
public async Task<IHttpActionResult> GetMountain(int id)
{
Mountain mountain = await db.Mountains.FindAsync(id);
if (mountain == null)
{
return NotFound();
}
if (mountain != null)
{
string mountainName = data[id];
dataCounter[id] = dataCounter[id] + 1;
Count = dataCounter[id];
var host = ((System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.UserHostAddress + "," + mountain.Name + "," + DateTime.Now + "," + Count;
System.IO.File.AppendAllText(@"C:\myfile.txt", host);
}
return Ok(mountain);
}