A free and open-source web framework that enables developers to create web apps using C# and HTML, developed by Microsoft.
Blazor Server におけるSessionクラスへの書き込みエラー
高鍋 敬太
0
Reputation points
HttpContextから取得したSessionクラスへの書き込みに際しエラーが発生しております。
コードは以下となります。
public void SetSessionInfo(string key, object value)
{
HttpContext httpContext = _httpContextAccessor.HttpContext;
ISession session = httpContext.Session;
// 格納するデータをJSON文字列にシリアライズして取得
string jsonValue = JsonSerializer.Serialize(value);
// セッションに指定されたキーでJSON文字列を格納
session.SetString(key, jsonValue);
}
このsession.SetStringの部分で、以下のエラーが発生し、書込みに失敗しております。
(一部マスキング)
System.InvalidOperationException
HResult=0x80131509
Message=The session cannot be established after the response has started.
Source=Microsoft.AspNetCore.Session
スタック トレース:
場所 Microsoft.AspNetCore.Session.DistributedSession.Set(String key, Byte[] value)
場所 Microsoft.AspNetCore.Http.SessionExtensions.SetString(ISession session, String key, String value)
場所 ○○○○.Data.SessionControl.SetSessionInfo(String key, Object value) (C:\visualstudiopj\source\○○○○\○○○○\Data\SessionControl.cs):行 ○○
場所 ○○○○.Pages.SessionID.<SetSessionInfo>d__14.MoveNext() (C:\visualstudiopj\source\○○○○\○○○○\Pages\SessionID.razor):行 ○○
この例外は、最初にこの呼び出し履歴
[外部コード]
○○○○.Data.SessionControl.SetSessionInfo(string, object) (SessionControl.cs 内)
○○○○.Pages.SessionID.SetSessionInfo() (SessionID.razor 内) でスローされました
エラー内容から察するに、httpcontextのレスポンスがすでに始まっている?というような内容のようなのですが、
対処法がわからず苦慮しております。
こちらのエラーの発生原因と、その対処法についてご教示いただけますでしょうか?
なお、フレームワークはBlazorServerを利用しており、当エラーについては、複数の開発者間で挙動が異なります。
書込みに成功する人とエラーが出る人とに分かれておりますが、ソースコードや、ブラウザの設定等は、
現状差異は見当たらない状況です。
ご確認の程よろしくお願い致します。
Developer technologies | .NET | Blazor
Developer technologies | .NET | Blazor
Developer technologies | ASP.NET Core | Other
Developer technologies | ASP.NET Core | Other
A set of technologies in .NET for building web applications and web services. Miscellaneous topics that do not fit into specific categories.
Sign in to answer