前段时间我使用 asp.net Web-api beta 构建了 API。我在某处读到,当托管在 IIS 中时,web-api 从运行它的 web 应用程序继承标识。我的 api 也在网站内运行。使用 beta 二进制文件,当我登录该站点然后移至该站点时http://localhost:4343/webui/api/values
,将为我返回登录用户的正确值。这是Get
值控制器的方法。
public IQueryable<string> Get()
{
var pr = Request.GetUserPrincipal();
var username = Request.GetUserPrincipal().Identity.Name; //Null reference exception after installing vs 2012 here. Identity is null even though I am logged in
var values = GetUserValues(username);
return values.AsQueryable();
}
它曾经在 web-api 的 beta 版本中正常工作,但在 vs2012 的最终版本中它会抛出空引用异常。我已将该站点转换为使用 .net 4.5。知道这里发生了什么吗?