Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 缓存数据库导致WebAPI身份验证_Asp.net_Authentication_Caching_Asp.net Web Api - Fatal编程技术网

Asp.net 缓存数据库导致WebAPI身份验证

Asp.net 缓存数据库导致WebAPI身份验证,asp.net,authentication,caching,asp.net-web-api,Asp.net,Authentication,Caching,Asp.net Web Api,我正在使用ASP.NET WebApi创建一个RESTful web服务。我要求所有传入的请求都通过SSL,因为我将使用基本的HTTP身份验证。客户端负责在请求头中包含凭据,web服务将在每个请求上对客户端进行身份验证 实际的身份验证需要进行数据库调用。有没有办法缓存数据库结果(用户名和密码),这样我就不必对短时间内发生的每个传入请求进行数据库调用 因此,当web服务中出现请求时,它将在缓存中查找用户名/密码组合。如果找到,它将处理该请求。如果找不到,它将调用数据库进行身份验证,然后将用户名/密

我正在使用ASP.NET WebApi创建一个RESTful web服务。我要求所有传入的请求都通过SSL,因为我将使用基本的HTTP身份验证。客户端负责在请求头中包含凭据,web服务将在每个请求上对客户端进行身份验证

实际的身份验证需要进行数据库调用。有没有办法缓存数据库结果(用户名和密码),这样我就不必对短时间内发生的每个传入请求进行数据库调用


因此,当web服务中出现请求时,它将在缓存中查找用户名/密码组合。如果找到,它将处理该请求。如果找不到,它将调用数据库进行身份验证,然后将用户名/密码添加到缓存中。

我能想到的最简单的缓存是使用System.Web.Caching。下面是一个极其简化的版本,它向当前缓存添加一个值,然后检索该值进行处理。我不建议按原样使用此代码

// GET api/values/5
[HttpGet]
public string GetValue(int id)
{
    HttpContext.Current.Cache.Insert("2", "test1");

    var value = Convert.ToString(HttpContext.Current.Cache.Get(id.ToString()));

    return !string.IsNullOrEmpty(value) ? value : "nothing found";
}