Async Ajax リクエストが必要なため、セッション状態を無効にする必要があります。Web アプリは ASP.Net 4 - MVC 2 に基づいています。
私は知っ[SessionState(SessionStateBehavior.Disabled)]
ていますが、MVC 3+で利用できます。
次のメソッドを使用して、特定の HTTP リクエストをセッションレス HTTPContext [source]にルーティングしています。
public class CustomRouteHandler : IRouteHandler
{
public System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext)
{
requestContext.HttpContext.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly);
return new MvcHandler(requestContext);
}
}
そして Global.asax で:
routes.MapRoute( _
Nothing, _
"ajaxrequest/{id}", _
New With {.controller = "AjaxEngine", .action = "Index", .id = UrlParameter.Optional}, _
New SessionLessRouteHandler()
)
結果?コードは正しくコンパイルされ、実行時にエラーは発生しません。ただし、何も変更されず、すべての単一の Ajax リクエストの HTTP ヘッダーに、新しいセッションで新しいセット Cookie が表示されます。たとえば、ブラウザが 100 個の Ajax リクエストをリクエストすると、リクエストごとに新しいセッションが生成されます。また、静的な Ajax リクエストにセッションは必要ありません。Chrome Network Monitor によって診断された各 Ajax リクエストに、次の行が表示されます。
Set-Cookie:ASP.NET_SessionId=xlgxdzdxdeilws23prjns3cv; domain=mydomain.com; path=/
なぜそれが機能しないのですか?また、リクエストに対して新しいセッションを作成しないようにするにはどうすればよいですか?
- Rick による別の解決策を試しましたが、結果は上記と同じです。