Session 使用浏览器地址栏时,我只能使MVC6会话正常工作

Session 使用浏览器地址栏时,我只能使MVC6会话正常工作,session,asp.net-core-mvc,Session,Asp.net Core Mvc,设置: 因此,我有两个VisualStudio实例正在运行 1) 后端:带有名为homeController的MVC控制器的MVC6应用程序 2) 前端:网站项目。HTML 我没有用mvc中的传统视图构建它,而是一个独立的HTML网页,使用mvc后端的数据我喜欢把它们分开 测试: 所以我想在MVC6中第一次使用会话,然后就开始了 第一次测试进行得很顺利,因为我没有费心编写html和ajax,我只是从地址栏调用了mvc,如下所示: $.ajax({ url: url + "/home/Se

设置:

因此,我有两个VisualStudio实例正在运行

1) 后端:带有名为homeController的MVC控制器的MVC6应用程序

2) 前端:网站项目。HTML

我没有用mvc中的传统视图构建它,而是一个独立的HTML网页,使用mvc后端的数据我喜欢把它们分开

测试:

所以我想在MVC6中第一次使用会话,然后就开始了

第一次测试进行得很顺利,因为我没有费心编写html和ajax,我只是从地址栏调用了mvc,如下所示:

$.ajax({
    url: url + "/home/SetSession",
    type: 'GET',
    async: true,
    crossDomain: true,
    cache: true,
    success: function (data) {
        alert("finito - Sessionid: " + data);
        $.ajax({
            url: url + "/home/GetSession",
            data: {
                sessionId: data,
            },
            type: 'GET',
            async: true,
            crossDomain: true,
            cache: true,
            success: function (data) {
                alert(data);
            },
            error: function (x, t, m) {
                alert("failed");
            }
        });
    },
    error: function (x, t, m) {
        alert("failed);
    }
});

其背后的代码是:

[HttpGet]
public string SetSession()
{
   string sessionId = "1";
   HttpContext.Session.SetString(sessionId, "myvalue");
   return sessionId;
}
[HttpGet]
public string GetSession(string sessionId)
{
   string value = HttpContext.Session.GetString(sessionId);
   return "session value is: " + value;
}
然后:

其背后的代码是:

[HttpGet]
public string SetSession()
{
   string sessionId = "1";
   HttpContext.Session.SetString(sessionId, "myvalue");
   return sessionId;
}
[HttpGet]
public string GetSession(string sessionId)
{
   string value = HttpContext.Session.GetString(sessionId);
   return "session value is: " + value;
}
它正确地给出了我的价值

问题:

但是当我用相同的方法编写网站和它的调用程序时,就不记得第二次调用中设置的值了

我的代码如下:

$.ajax({
    url: url + "/home/SetSession",
    type: 'GET',
    async: true,
    crossDomain: true,
    cache: true,
    success: function (data) {
        alert("finito - Sessionid: " + data);
        $.ajax({
            url: url + "/home/GetSession",
            data: {
                sessionId: data,
            },
            type: 'GET',
            async: true,
            crossDomain: true,
            cache: true,
            success: function (data) {
                alert(data);
            },
            error: function (x, t, m) {
                alert("failed");
            }
        });
    },
    error: function (x, t, m) {
        alert("failed);
    }
});
那么为什么我的网站无法使用它呢?有什么区别?

我的一些Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();
    services.AddCors();
    services.AddCaching();
    services.AddSession(options => {
        options.IdleTimeout = TimeSpan.FromMinutes(30);
        options.CookieName = ".BrunataBooking";
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseIISPlatformHandler();

    app.UseStaticFiles();

    app.UseSession();

    app.UseCors(builder =>
    {
        builder.WithOrigins("*")
               .WithMethods("GET", "POST")
               .AllowAnyHeader();
    });

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Start}/{id?}");
    });
}