解決策 1:
リンク: リクエストのルーティング時に HttpContext.Current.Session が null になる
とった。実際、かなり愚かです。次のように SessionStateModule を削除して追加した後、機能しました。
<configuration>
...
<system.webServer>
...
<modules>
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule"/>
...
</modules>
</system.webServer>
</configuration>
「セッション」はmachine.config
.
さて、それが通常のことなのだろうか。それはとても粗野に見えるので、確かにそうではないようです...
解決策 2:
リンク: HttpContext.Current.Session null アイテム
sessionKey が変更されている可能性があります。おそらく次のことを行う必要があります。
HttpContext.Current.Session["CurrentUser"]
または、セッションの有効期限が切れている可能性があります。タイムアウトを確認してください。
http://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx
または、別の場所からセッション値を設定している可能性があります。通常、1 つのプロパティを介してセッション/コンテキスト オブジェクトへのアクセスを制御します。
static readonly string SESSION_CurrentUser = "CurrentUser";
public static SiteUser Create() {
SiteUser.Current = new SiteUser();
return SiteUser.Current;
}
public static SiteUser Current {
get {
if (HttpContext.Current.Session == null || HttpContext.Current.Session[SESSION_CurrentUser] == null) {
throw new SiteUserAutorizationExeption();
}
return HttpContext.Current.Session[SESSION_CurrentUser] as SiteUser;
}
set {
if (!HttpContext.Current.Session == null) {
HttpContext.Current.Session[SESSION_CurrentUser] = value;
}
}
}