Visual studio 2015 SetObjectAsJson和GetObjectFromJson未显示为.NET Core 1.0中HttpContext.Session的一部分

Visual studio 2015 SetObjectAsJson和GetObjectFromJson未显示为.NET Core 1.0中HttpContext.Session的一部分,visual-studio-2015,asp.net-core,asp.net-core-mvc,Visual Studio 2015,Asp.net Core,Asp.net Core Mvc,我担心这是一个新手的错误,但我一直在寻找,我找不到任何与此相关的东西 我有一个.NET Core v1.0 Web应用程序,是为intranet应用程序构建的。它已通过用户测试并部署到生产环境中 今天一位用户指出了一个小错误。自从部署以来,我已经在VS2015中迁移了工作区,因此我下载了该项目。在初始构建时,我收到CS1061错误,指出SetObjectAsJson不是ISession的一部分。以下是违规代码: public async Task<IActionResult> Ind

我担心这是一个新手的错误,但我一直在寻找,我找不到任何与此相关的东西

我有一个.NET Core v1.0 Web应用程序,是为intranet应用程序构建的。它已通过用户测试并部署到生产环境中

今天一位用户指出了一个小错误。自从部署以来,我已经在VS2015中迁移了工作区,因此我下载了该项目。在初始构建时,我收到CS1061错误,指出
SetObjectAsJson
不是
ISession
的一部分。以下是违规代码:

public async Task<IActionResult> Index(DateTime? beginDate, DateTime? endDate, string currentLocation)
    {       

        var userId = this.User.Identity.Name;
        var userEmail = userId.Remove(0, 11) + "@roystonllc.com";
        var querystring = this.HttpContext.Request.QueryString.Value;
        var ex = _context.Engineer.Where(x => x.sEmail == userEmail);
        var engineer = await ex.FirstOrDefaultAsync();
        HttpContext.Session.SetObjectAsJson("Engineer", engineer);

SetObjectAsJson
GetObjectFromJson
不是ASP.NET核心的一部分。它们是可能源于本文的扩展方法。尝试通过您的解决方案进行文本搜索,也许他们所在的库没有被正确引用

否则,请将以下类添加到项目中:

公共静态类SessionExtensions
{
公共静态void SetObjectAsJson(此ISession会话、字符串键、对象值)
{
SetString(key,JsonConvert.SerializeObject(value));
}
公共静态T GetObjectFromJson(此ISession会话,字符串键)
{
var值=session.GetString(键);
返回值==null?默认值(T):JsonConvert.DeserializeObject(值);
}
}

请注意,代码(
JsonConvert
)依赖于Newtonsoft.Json NuGet包,因此您可能还需要添加该参考。

谢谢!我是对的,这是新手犯的错误。我已经有了JsonConvert包,所以几个月前我显然在会话中搜索了一种存储对象的方法,但不知何故,这种更改没有被签入。对于在哪里放置这样的扩展类以获得良好的代码组织,您有什么建议吗?哈哈:)有时候要找到一个适合扩展方法的地方并不容易。我通常会将它们放在一个名为“Extensions”的文件夹中(就在根文件夹下),并尝试按照它们相关的名称空间或类型(例如“IOExtensions”、“StringExtensions”或“DateTimeExtensions”)对它们进行组织。我认为更重要的是将它们放在正确的程序集中。如果扩展只与.NET类型/命名空间相关,我认为可以将它们放在单个单独的程序集中。如果扩展与自定义类型相关,则应将它们放在这些类型旁边的程序集中。该类是否需要在特定的命名空间中装入rel在我的例子中,我试图在服务中的会话上使用扩展属性。不,只是从调用扩展的代码中引用您的命名空间。
public void ConfigureServices(IServiceCollection services)
    {

        var connection = @"Server=THESERVER;Database=THEDATABASE;Trusted_Connection=True;Integrated Security=false;User ID=THEUSER;Password=THEPASSWORD";
        services.AddDbContext<SCHEDULEContext>(options => options.UseSqlServer(connection));
        // Add framework services.
        services.AddMvc();
        services.AddMvcGrid();
        services.AddDistributedMemoryCache(); // Adds a default in-memory implementation of IDistributedCache
        services.AddSession();


    }
    {
    "dependencies": {
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Razor.Tools": {
    "version": "1.1.0-preview4-final",
   "type": "build"
},
"Microsoft.AspNetCore.Routing": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
"Microsoft.NETCore.App": {
  "version": "1.1.0",
  "type": "platform"
},
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
//"Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.1.0-preview4-final",
//"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.1.0-preview4-final"
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview2-final",
"Microsoft.DotNet.InternalAbstractions": "1.0.0",
"NonFactors.Grid.Mvc6": "1.3.0",
"NonFactors.Grid.Core.Mvc6": "1.3.0",
"Microsoft.AspNetCore.Session": "1.1.0",
"Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final"
},

    "tools": {
    "BundlerMinifier.Core": "2.2.306",
"Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
  "version": "1.0.0-preview2-final",
  "imports": [
    "portable-net45+win8"
  ]
}
//"Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.1.0-preview4-final"
},

"frameworks": {
  "netcoreapp1.0": {
    "imports": [
      "dotnet5.6",
      "portable-net45+win8"
    ]
  }
},

"buildOptions": {
  "emitEntryPoint": true,
  "preserveCompilationContext": true
},

"runtimeOptions": {
  "configProperties": {
    "System.GC.Server": true
  }
},

"publishOptions": {
  "include": [
    "wwwroot",
    "**/*.cshtml",
    "appsettings.json",
    "web.config"
  ]
},

"scripts": {
  "prepublish": [ "bower install", "dotnet bundle" ],
  "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}