dotnet / dotnet/systemweb-adapters
Session State is not working or Could not redirect to WebForms page.
- Dominant language
- C#
- Stars
- 384
- Forks
- 76
- Avg merge
- 2h 24m
- Merged PRs (30d)
- 1
Description
I am trying to migrate few of the pages from **webforms application (Session oriented APP) to** **.Net core Blazor Server app (.Net 7)**, either I **could not get the session object** in the .net core or **could not redirect to webforms page.** Can you please suggest.
if I invoke RequireSystemWebAdapterSession() after MapBlazorHub middleware pipeline like below , I am able to set the session (System.Web.HttpContext.Current.Session!["sessionstring"] = "Temp Session";)
**but System could not navigate from blazor to framework app.**
**### app.MapBlazorHub().RequireSystemWebAdapterSession();**
app.MapRazorPages();
app.MapBlazorPages("/_Host");
app.MapReverseProxy();
suppose if I change code like below **without** **RequireSystemWebAdapterSession**, Navigation will work from Blazor Server app to framework app. But could not read or set the session in the core app, Current.Session is showing null.
app.MapBlazorHub();
app.MapRazorPages();
app.MapBlazorPages("/_Host");
app.MapReverseProxy();
if I use both then application is having ambiguous matching endpoint - which is not correct.
app.MapBlazorHub();
app.MapBlazorHub().RequireSystemWebAdapterSession();
here is the error from console:
System.Net.Http.HttpRequestException: Response status code does not indicate success: 400 (Bad Request).
at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
at Microsoft.AspNetCore.SystemWebAdapters.SessionState.RemoteSession.RemoteAppSessionStateManager.SetOrReleaseSessionData(ISessionState state, CancellationToken cancellationToken)
at Microsoft.AspNetCore.SystemWebAdapters.SessionState.RemoteSession.RemoteSessionState.CommitAsync(CancellationToken token)
at Microsoft.AspNetCore.SystemWebAdapters.SessionMiddleware.ManageStateAsync(HttpContext context, SessionAttribute metadata)
I have set up unique apikey in both places, and tried with both latest adapters version 1.2.0 is also, if i use latest having different error.
Please see the complete code in the Program.cs here.
I have set up everything as described in the documentation -
var app = builder.Build();
app.UseStaticFiles();
app.UseForwardedHeaders();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
//app.UsePathBase("/" + pathBase);
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseSystemWebAdapters();
//app.UseSession();
//app.UseCors(x => x.AllowAnyOrigin());
//app.UseRequestLocalization();
app.UseAuthorization();
//app.MapBlazorHub().BufferResponseStream().PreBufferRequestStream().RequireSystemWebAdapterSession();
// The following Require System Web Adapter session is required for MapBlazorHub to use the session context object.
app.MapBlazorHub().RequireSystemWebAdapterSession();
app.MapRazorPages();//.RequireSystemWebAdapterSession();
app.MapBlazorPages("/_Host");
app.MapReverseProxy();
app.Run();
please let me know if any additional details are needed.
appsettings.json: (reverse proxy)
"ReverseProxy": {
"Routes": {
"fallbackRoute": {
"ClusterId": "fallbackCluster",
"Order": "1",
"Match": {
"Path": "{**catch-all}"
}
}
},
"Clusters": {
"fallbackCluster": {
"Destinations": {
"fallbackApp": {
//This needs to be changed based on the environment.
"Address": "https://localhost/{aaa}"
}
}
}
}
}
Contributor guide
Assessment
This issue has not been assessed yet.