我面临的问题是,HttpContext.Current
在我们期望为空时为 NOT 为空。
我的应用程序具有用于验证用户身份的共享类。可以使用Windows身份验证或窗体身份验证来验证用户。此代码检查HttpContext.Current
是否为空。如果不是,则尝试使用Forms身份验证进行身份验证;如果不是,则尝试使用Windows身份验证进行身份验证。
示例:
if (HttpContext.Current != null)
{
var formsAuthUser = FormsAuthenticationUser.CreateFormToken(HttpContext.Current.User.Identity.Name);
if (formsAuthUser != null)
{
//Authenticate using Forms authentication
}
}
//Authenticate using Windows authentication
使用此代码的NT服务尝试对用户进行身份验证时,出现了我的问题。启动服务后,var formsAuthUser = FormsAuthenticationUser.CreateFormToken(HttpContext.Current.User.Identity.Name);
行会引发异常。
因为HttpContext.Current.User.Identity.Name
为null。
我的问题是为什么当我从NT服务访问上下文并且没有对IIS发出任何请求时,为什么我会有一个非空的HttpContext.Current
?
任何输入将不胜感激;请让我知道是否能提供更多信息。