- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试设置我的依赖注入(inject),我需要将 IAuthenticationManager
从 ASP.NET Identity 注入(inject)到 OwinContext
。
为此,我从我的 Global.asax -> ServiceConfig.Configure()
运行:
container.Register(() => HttpContext.Current.GetOwinContext().Authentication);
但是当我运行我的应用程序时,我收到这条消息:
No owin.Environment item was found in the context
为什么这个 HttpContext.Current.GetOwinContext() 在 Global.asax 中不可用?
Startup.cs
[assembly: OwinStartupAttribute(typeof(MyApp.Web.Startup))]
namespace Speedop.Web
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
Startup.Auth.cs
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<UserManager<User, int>, User, int>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentityCallback: (manager, user) => manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie),
getUserIdCallback: (id) => (Int32.Parse(id.GetUserId()))
)
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
}
}
最佳答案
我用以下方法解决了这个问题:
container.RegisterPerWebRequest(() =>
{
if (HttpContext.Current != null && HttpContext.Current.Items["owin.Environment"] == null && container.IsVerifying())
{
return new OwinContext().Authentication;
}
return HttpContext.Current.GetOwinContext().Authentication;
});
似乎 OwnContext 在启动时不存在,所以我会等待它并在它存在时注入(inject)它。请注意 container.IsVerifying()
存在于 SimpleInjector.Advanced
关于c# - 如何从 Global.asax 获取 OwinContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660380/
理论上,OwinContext 环境应该可以访问请求/响应信息以及服务器变量,但由于某些原因,我无法访问来自 Request.ServerVariables 的一些自定义服务器变量。收藏。 是什么导致
我需要在运行时更改 dbContext对于 Request.GetOwinContext()使用特定的 connectionString但它不起作用。 我有一个 dbContex class接受默认
我需要一种方法来为每个请求存储一个日志记录对象。使用 HttpContext 我会将其添加到项目字典中。如果可以的话,我不想将 HttpContext 引入其中。下面的代码是我为 Unity Life
我正在使用 ASP.NET Identity、OwinContext 和 EF 6 将包含所有必需用户的 excel 文件上传到我的网站。我的代码如下所示: foreach (var bulkUser
我正在尝试对一种方法进行单元测试,该方法检查 OwinContext.Request.Query 中的查询并更改它 public static async Task SetUpQuery(IOwinC
我使用声明进行身份验证并基于此文档 auth user我可以使用 OwinContext 登录。但是,与 SecurityManager.Authenticate 不同,OwinContext 不会返
我有一个使用 Nancy 的自托管 Owin 应用程序。在其中一个 NancyModules 中,我需要获取 IOwinContext 的实例。 这个问题涉及主题,但没有解决方案:Get curren
与 HttpContext.Current.GetOwinContext() 我可以在 Web 应用程序中接收当前的 OwinContext。 与 OwinContext.Set和 OwinConte
我有一个使用 Microsoft Identity 2.0 和 Unity.Mvc 进行依赖注入(inject)的 ASP.NET Web 应用程序。 Microsoft Identity 2.0 在
我正在尝试设置我的依赖注入(inject),我需要将 IAuthenticationManager 从 ASP.NET Identity 注入(inject)到 OwinContext。 为此,我从我
基于 Katana 项目中的其他示例,我正在为 OpenID Connect 授权代码流编写自己的 OWIN 中间件。 作为其中的一部分,我必须构建几个 URI,例如一个重定向 URI 和一个返回 U
我正在按照 Microsoft 示例使用 Identity 2.0.0 实现电子邮件验证 我卡在这部分了 public ApplicationUserManager UserManager {
当用户访问网站并输入存储在我们数据库中的凭据时,我们会创建身份验证。 如何设置超时时间?使用 MVC 5。 我的身份验证如下所示: var claims = new List();
我有一个简单的模型 Binder : public class PersonBinder : IModelBinder { public object BindModel(Controller
我希望在所有应用程序请求之间共享特定的静态数据(尤其是站点菜单 DTO)。在过去的 system.web.dll 时代,这会将 Application_Start 中的数据添加到 HttpConten
我是一名优秀的程序员,十分优秀!