System.Net.Primitives.dll找不到该文件

时间:2016-05-20 12:55:31

标签: asp.net-mvc asp.net-core .net-core-rc2

在ApsNetCore RC2网络应用程序中,我在注入IHttpContextAccessor时出现问题

我有一个实现IHttpContextAccessor的类HttpContextService,在stratup.cs中我添加了它services.AddTransient<IHttpContextAccessor, HttpContextService>();

当我运行项目时它停止而没有显示错误,所以我查看了日志并发现了这个: 的&#39; dotnet.exe&#39; (CoreCLR:clrhost):已加载&#39; C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App \ 1.0.0-rc2-3002702 \ System.Net.Primitives.dll&#39;。无法找到或打开PDB文件。 抛出异常:&#39; System.IO.FileNotFoundException&#39;在mscorlib.ni.dll中 抛出异常:&#39; System.IO.FileNotFoundException&#39;在mscorlib.ni.dll中 抛出异常:&#39; System.InvalidOperationException&#39;在Microsoft.Extensions.DependencyInjection.dll

是否有人有相同的问题或解决方案来修复它?

编辑: 我尝试以两种方式激活服务:

    //this one throws and error Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor' while attempting to activate 'EPTV.Services.HttpContextService'.
        services.AddTransient<HttpContextService>();
//and with this one the project dont even start like I explained before
        services.AddTransient<IHttpContextAccessor, HttpContextService>();

服务如下:

public class HttpContextService : IHttpContextAccessor
    {
        private readonly IHttpContextAccessor _accessor;

        public HttpContext HttpContext
        {
            get { return HttpContext; }

            set { HttpContext = value; }
        }

        public HttpContextService(IHttpContextAccessor accessor)
        {
            _accessor = accessor;
        }

        public HttpContext GetHttpContext()
        {
            return _accessor.HttpContext;
        }
        public string GetHeader(string value)
        {
            return _accessor.HttpContext.Request.Headers[value];
        }

        public string GetUserAgent()
        {
            return _accessor.HttpContext.Request.Headers["User-Agent"];
        }

        public string GetHost()
        {
            return _accessor.HttpContext.Request.Host.Value;
        }
    }

这是我得到的例外:

抛出异常:&#39; System.InvalidOperationException&#39;在Microsoft.Extensions.DependencyInjection.dll中 附加信息:检测到类型为&#39; Microsoft.AspNetCore.Http.IHttpContextAccessor&#39;的服务的循环依赖关系。

3 个答案:

答案 0 :(得分:0)

您需要添加&#34; System.Net.Primitives&#34;在project.json的依赖项中。

"dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    },
    "System.Net.Primitives": "4.0.11-rc2-24027"
  }

答案 1 :(得分:0)

不支持修改ASP.NET Core服务,请参阅this Github issue进行讨论。

here

描述了您的问题的“hacky”解决方案

答案 2 :(得分:0)

我终于找到了解决方案。

似乎在AspNetCore rc2中你必须在startup.cs中注册IHttpContextAccessor services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

然后你就可以在控制器或其他服务中注入IHttpContextAccessor