C# 计算特定get请求的Webapi

C# 计算特定get请求的Webapi,c#,asp.net,linq,rest,asp.net-web-api,C#,Asp.net,Linq,Rest,Asp.net Web Api,我有一个包含不同山脉的数据库,在我的Web Api中,我试图记录IP地址、时间和日期以及特定山脉被访问的次数。如果用户导航到api/Mountains/1,则应记录ip地址、日期时间以及特定mountain.name的计数。但我有点迷失在逻辑中,我不知道如何计算每一座山?我没有存储这些信息,所以我希望它能被保存在内存中 编辑:(根据答案更新) 公共类Mountains控制器:ApiController { 私有MountainContext db=新的MountainContext(); 私人整

我有一个包含不同山脉的数据库,在我的Web Api中,我试图记录IP地址、时间和日期以及特定山脉被访问的次数。如果用户导航到
api/Mountains/1
,则应记录ip地址、日期时间以及特定
mountain.name
的计数。但我有点迷失在逻辑中,我不知道如何计算每一座山?我没有存储这些信息,所以我希望它能被保存在内存中

编辑:(根据答案更新)

公共类Mountains控制器:ApiController
{
私有MountainContext db=新的MountainContext();
私人整数计数;
静态字典数据;
静态字典数据计数器;
静态山控制器()
{
data=Enumerable.Range(1,10).ToDictionary(i=>i,i=>Mountain+i.ToString());
dataCounter=Enumerable.Range(1,10).ToDictionary(i=>i,i=>0);
}
//获取:api/Mountains/5
[响应类型(类型(山))]
公共异步任务(int id)
{
Mountain Mountain=await db.Mountains.FindAsync(id);
if(mountain==null)
{
返回NotFound();
}
if(mountain!=null)
{
字符串mountainName=数据[id];
dataCounter[id]=dataCounter[id]+1;
计数=数据计数器[id];
var host=((System.Web.HttpContextWrapper)Request.Properties[“MS_HttpContext”]).Request.UserHostAddress+”,“+mountain.Name+”,“+DateTime.Now+”,“+Count;
System.IO.File.AppendAllText(@“C:\myfile.txt”,主机);
}
返回Ok(山);
}

如果只需要内存中的计数器数据,可以使用静态字典。 看看这个

using System.Collections.Generic;
using System.Web.Http;
using System.Linq;

namespace WebApplication3.Areas.api.Controllers
{
    public class MountainController : ApiController
    {
        static Dictionary<int, string> data;
        static Dictionary<int, int> dataCounter;

        static MountainController()
        {
            data = Enumerable.Range(1, 10).ToDictionary(i => i, i => "Mountain " + i.ToString());
            dataCounter = Enumerable.Range(1, 10).ToDictionary(i => i, i => 0);
        }
        [HttpGet]
        public MountainModel GetMountain(int id)
        {
            string mountainName = data[id];

            dataCounter[id] = dataCounter[id] + 1;
            return new MountainModel() { Id = id, Name = mountainName, Count = dataCounter[id] };
        }
    }
    public class MountainModel
    {
        public int Count { get; set; }
        public int Id { get; set; }
        public string Name { get; set; }
    }

}
使用System.Collections.Generic;
使用System.Web.Http;
使用System.Linq;
命名空间WebApplication3.Areas.api.Controllers
{
公共类MountainController:ApiController
{
静态字典数据;
静态字典数据计数器;
静态山控制器()
{
data=Enumerable.Range(1,10).ToDictionary(i=>i,i=>Mountain+i.ToString());
dataCounter=Enumerable.Range(1,10).ToDictionary(i=>i,i=>0);
}
[HttpGet]
公共MountainModel GetMountain(int id)
{
字符串mountainName=数据[id];
dataCounter[id]=dataCounter[id]+1;
返回新的MountainModel(){Id=Id,Name=mountainName,Count=dataCounter[Id]};
}
}
公共类山体模型
{
公共整数计数{get;set;}
公共int Id{get;set;}
公共字符串名称{get;set;}
}
}
using System.Collections.Generic;
using System.Web.Http;
using System.Linq;

namespace WebApplication3.Areas.api.Controllers
{
    public class MountainController : ApiController
    {
        static Dictionary<int, string> data;
        static Dictionary<int, int> dataCounter;

        static MountainController()
        {
            data = Enumerable.Range(1, 10).ToDictionary(i => i, i => "Mountain " + i.ToString());
            dataCounter = Enumerable.Range(1, 10).ToDictionary(i => i, i => 0);
        }
        [HttpGet]
        public MountainModel GetMountain(int id)
        {
            string mountainName = data[id];

            dataCounter[id] = dataCounter[id] + 1;
            return new MountainModel() { Id = id, Name = mountainName, Count = dataCounter[id] };
        }
    }
    public class MountainModel
    {
        public int Count { get; set; }
        public int Id { get; set; }
        public string Name { get; set; }
    }

}