Angularjs 为什么异步请求中的会话变量为空?
我正在使用.NETCore3上的会话变量,当我发出检查这些变量的异步请求(来自angularjs)时,它们会变成空值(对于同步请求,我可以得到这些值) 这是我的设置。csAngularjs 为什么异步请求中的会话变量为空?,angularjs,asp.net-core,session-variables,asp.net-core-3.0,Angularjs,Asp.net Core,Session Variables,Asp.net Core 3.0,我正在使用.NETCore3上的会话变量,当我发出检查这些变量的异步请求(来自angularjs)时,它们会变成空值(对于同步请求,我可以得到这些值) 这是我的设置。cs public void ConfigureServices(IServiceCollection services) { string[] origins = new string[1] { "http://angularapp" }; services.AddC
public void ConfigureServices(IServiceCollection services)
{
string[] origins = new string[1] { "http://angularapp" };
services.AddCors(options =>
{
options.AddPolicy("AllowMyOrigin",
builder => builder.WithOrigins(origins)
.AllowAnyHeader()
.AllowCredentials());
});
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddTransient<IClaimPrincipalManager, ClaimPrincipalManager>();
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.Cookie.IsEssential = true;
});
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseCors("AllowMyOrigin");
app.UseRouting();
app.UseAuthorization();
app.UseSession();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
顺便说一句,通过实现此扩展,我正在使用方法session.LoadAsync()
public static class SessionExtensions
{
public static async Task Set<T>(this ISession session, string key, T value)
{
if (!session.IsAvailable)
await session.LoadAsync();
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static async Task<T> Get<T>(this ISession session, string key)
{
if (!session.IsAvailable)
await session.LoadAsync();
var value = session.GetString(key);
return value == null ? default(T) :
JsonConvert.DeserializeObject<T>(value);
}
}
公共静态类SessionExtensions
{
公共静态异步任务集(此ISession会话,字符串键,T值)
{
如果(!session.IsAvailable)
wait session.LoadAsync();
SetString(key,JsonConvert.SerializeObject(value));
}
公共静态异步任务Get(此ISession会话,字符串键)
{
如果(!session.IsAvailable)
wait session.LoadAsync();
var值=session.GetString(键);
返回值==null?默认值(T):
JsonConvert.DeserializeObject(值);
}
}
打字错误:
$http({
method: "POST",
url: BACKEND_URL,
̶w̶i̶t̶h̶C̶r̶e̶d̶e̶t̶i̶a̶l̶:̶ ̶t̶r̶u̶e̶,̶
withCredentials: true,
headers: ̶[̶
{ 'Content-Type': 'application/json' }
̶]̶
}).then(function (response) {
console.log(response);
});
有关详细信息,请参阅
public static class SessionExtensions
{
public static async Task Set<T>(this ISession session, string key, T value)
{
if (!session.IsAvailable)
await session.LoadAsync();
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static async Task<T> Get<T>(this ISession session, string key)
{
if (!session.IsAvailable)
await session.LoadAsync();
var value = session.GetString(key);
return value == null ? default(T) :
JsonConvert.DeserializeObject<T>(value);
}
}
$http({
method: "POST",
url: BACKEND_URL,
̶w̶i̶t̶h̶C̶r̶e̶d̶e̶t̶i̶a̶l̶:̶ ̶t̶r̶u̶e̶,̶
withCredentials: true,
headers: ̶[̶
{ 'Content-Type': 'application/json' }
̶]̶
}).then(function (response) {
console.log(response);
});