- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在 ASP.NET Core RC 1 中,我使用以下代码来检索上下文的值(页面的完整地址)。然后我在配置中记录了这个值。
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
private IHostingEnvironment CurrentEnvironment { get; set; }
private IHttpContextAccessor HttpContextAccessor { get; set; }
public Startup(IHostingEnvironment env,
IHttpContextAccessor httpContextAccessor)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
if (env.IsDevelopment())
{
builder.AddUserSecrets();
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
CurrentEnvironment = env;
HttpContextAccessor = httpContextAccessor;
}
public void ConfigureServices(IServiceCollection services)
{
...
services.AddOptions();
services.Configure<WebAppSettings>(configuration);
services.Configure<WebAppSettings>(settings =>
{
...
settings.WebRootPath = CurrentEnvironment.WebRootPath;
settings.DomainUrl = HttpContextAccessor.HttpContext.Request.Host.ToUriComponent();
});
}
}
现在我开始在 ASP.NET Core 1.0 上更新项目。但是在网站启动期间,我收到以下错误:
System.InvalidOperationException Unable to resolve service for type'Microsoft.AspNetCore.Http.IHttpContextAccessor' while attempting toactivate 'MyProject.Startup'.
atMicrosoft.Extensions.Internal.ConstructorMatcher.CreateInstance(IServiceProviderprovider) atMicrosoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProviderprovider, Type instanceType, Object[] parameters) atMicrosoft.Extensions.Internal.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProviderprovider, Type type) atMicrosoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProviderprovider, Type type) atMicrosoft.AspNetCore.Hosting.Internal.StartupLoader.LoadMethods(IServiceProviderservices, Type startupType, string environmentName) atMicrosoft.AspNetCore.Hosting.<>c__DisplayClass1_0.b__1(IServiceProvidersp) atMicrosoft.Extensions.DependencyInjection.ServiceLookup.FactoryService.Invoke(ServiceProviderprovider) atMicrosoft.Extensions.DependencyInjection.ScopedCallSite.Invoke(ServiceProviderprovider) atMicrosoft.Extensions.DependencyInjection.SingletonCallSite.Invoke(ServiceProviderprovider) atMicrosoft.Extensions.DependencyInjection.<>c__DisplayClass12_0.b__0(ServiceProviderprovider) atMicrosoft.Extensions.DependencyInjection.ServiceProvider.GetService(TypeserviceType) atMicrosoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProviderprovider, Type serviceType) atMicrosoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProviderprovider) atMicrosoft.AspNetCore.Hosting.Internal.WebHost.EnsureStartup() atMicrosoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices()at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
.NET Framework X64 v4.0.30319.42000 | Microsoft.AspNetCore.Hostingversion 1.0.0-rtm-21431 | Microsoft Windows 6.1.7601 S
如何在应用程序启动时获取新版本的 IHttpContextAccessor?
最佳答案
它不再是默认服务。你必须在 Startup.cs 中配置它
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.TryAddSingleton<IActionContextAccessor, ActionContextAccessor>();
更新:在 ASP.NET Core 2.1 中,the AddHttpContextAccessor
helper extension method已添加以使用正确的生命周期(单例)正确注册 IHttpContextAccessor
。所以,在 ASP.NET Core 2.1 及以上版本中,代码应该是
services.AddHttpContextAccessor();
services.TryAddSingleton<IActionContextAccessor, ActionContextAccessor>();
关于c# - ASP.NET Core 1.0如何在DI的Startup类中添加IHttpContextAccessor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38184583/
我有一个使用 IHttpContextAccessor 获取 header 值的方法 public class HeaderConfiguration : IHeaderConfiguration {
我在尝试从 IHttpContextAccessor 字段获取 httpcontext 时遇到问题,该字段在类中始终为 null。 有我的startup.cs public void Configur
我正在尝试使用 .NET Core 运行时将 ASP.NET MVC 站点迁移到 ASP.NET Core。以前我们可以从 session 存储中获取对象,即使是在不同的程序集中,使用 var obj
我有静态助手类 public static class Current { public static string Host { get { return "http
这是一个asp.net核心项目。这是我的代码。 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .Ad
我正在尝试在静态类中创建通用 addReplaceCookie 方法。该方法看起来像这样 public static void addReplaceCookie(string cookieName,
在我见过的所有 IHttpContextAccessor 注入(inject)示例中,它都被设置为 Singleton。 例子: How to add IHttpContextAccessor in
我在 .NET 6 Core 中创建了自定义授权策略。它可以很好地满足我的要求,但是我在调试时发现错误 - 尚未为此应用程序或请求配置 session 。但是我已经在我的 program.cs 中
David Fowler 和 Damian Edwards 最近在伦敦 NDC 发表了关于调试 asp.net core 2.0 的演讲。 In that talk ,他们会警告执行异步操作的 Con
当我尝试从 IHttpContextAccessor 字段始终为空获取 httpcontext 时遇到问题。 这是我的startup.cs public void ConfigureServi
我正在将 Multi-Tenancy 应用程序从 Webapi 迁移到 aspnet core。在 webapi 版本中,我使用 TenantIdentificationStrategy 根据 Htt
我一直在模拟 IHttpContextAccessor 以进行一些 Web API 集成测试。我的目标是能够模拟 IHttpContextAccessor 并返回 NameIdentifier 声明和
我正在尝试使用 Jason Taylor's Clean Architecture Template ,这个模板使用NSwag自动创建了一个TypeScript Client(Angular),但是我
目标:将 IHttpContextAccessor 作为依赖注入(inject)到 autmapper 配置文件的构造函数中 原因:我需要传入当前用户的身份名称作为构建我的域对象之一的一部分 问题获取
在启动文件中,我试图在构造函数本身中注入(inject) IHttpContextAccessor。 在本地运行 API 时,IHttpContextAccessor 成功注入(inject)到启动类
.NET Core 2.2 成功登录后,HttpContext.User.Claims 和 IHttpContextAccessor 均返回空值这是我的启动服务, services.AddDbCo
我想尝试一下使用 Blazor 服务器端,到目前为止,我已经设法以某种方式克服了大多数令人头疼的问题,并且很享受它,直到现在。 我正在尝试为 Google Recaptcha v3 编写一个验证器,它
我有一个 Controller 操作方法: public void Register([FromBody]RegisterTenantCommand message) { ... } 我有 R
我开始将我的 asp.net core RC1 项目转换为 RC2 并面临现在的问题 IHttpContextAccessor没有解决。 为了简单起见,我使用 Visual Studio 模板 ASP
我想设置一个服务,将当前的 HttpContext 注入(inject)到我项目的一个类中,以便它可以管理 cookie。 我在我的 Startup.cs 类中这样设置服务: public void
我是一名优秀的程序员,十分优秀!