#session #asp.net-core-mvc
#сеанс #asp.net-core-mvc
Вопрос:
Настройка:
Итак, у меня запущено два экземпляра Visual Studio.
1) Серверная часть: приложение MVC 6 с контроллером MVC, называемым HomeController
2) Интерфейс: проект веб-сайта. HTML.
Я не создавал его с использованием традиционных представлений в mvc, а отдельной веб-страницы HTML, используя серверную часть MVC для передачи данных. — Мне нравится, когда они разделены.
Тест:
Итак, я хотел впервые использовать сеансы в MVC 6 и следовал этому руководству.
Первые тесты прошли нормально, так как я не стал писать html и ajax, я просто вызвал mvc из адресной строки следующим образом:
http://localhost:55043/home/setsession
Код, стоящий за этим:
[HttpGet]
public string SetSession()
{
string sessionId = "1";
HttpContext.Session.SetString(sessionId, "myvalue");
return sessionId;
}
И затем:
http://localhost:55043/home/getsession?sessionId=1
Код, стоящий за этим:
[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?}");
});
}