Visual studio 2015 SetObjectAsJson和GetObjectFromJson未显示为.NET Core 1.0中HttpContext.Session的一部分
我担心这是一个新手的错误,但我一直在寻找,我找不到任何与此相关的东西 我有一个.NET Core v1.0 Web应用程序,是为intranet应用程序构建的。它已通过用户测试并部署到生产环境中 今天一位用户指出了一个小错误。自从部署以来,我已经在VS2015中迁移了工作区,因此我下载了该项目。在初始构建时,我收到CS1061错误,指出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
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%" ]
}
}