---
title: WebContextService
summary: API reference for WebContextService.
status: draft
owner: SAIF Documentation
last_reviewed: 2026-09-17
library: SAIF.Framework.Web.Mvc
reference_type: package
---

# WebContextService

Implements `IWebContextService` for the web tier: resolves, creates, and persists web contexts by caching them in `HttpContext.Session` and proxying cache misses to the remote WCF `IWebContextService` endpoint.

## Purpose
- Implements `IWebContextService` for the web tier: resolves, creates, and persists web contexts by caching them in `HttpContext.Session` and proxying cache misses to the remote WCF `IWebContextService` endpoint.
- Constructed once per request (`InstancePerRequest` in Autofac) but reads/writes a session-scoped dictionary, so cached contexts survive across requests within the same session.

## Context
- Namespace: `SAIF.Web`
- Assembly/package: `SAIF.Framework.Web.Mvc (source-shipping NuGet package)`
- Kind: class (service)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| WebContextService(IEnvironmentService) | `public WebContextService(IEnvironmentService environmentService)` | Initializes the session-backed context cache and resolves the cached WCF endpoint URL for the session; see the "Initialize the web context service for a session" operation. |
| Get() | `public IWebContext Get()` | Creates a brand-new web context via the remote service and caches it; see the "Create a new web context" operation. |
| Get(string contextId) | `public IWebContext Get(string contextId)` | Returns the session-cached context for the id, or recreates it remotely on a cache miss; see the "Get a web context by id" operation. |
| Get(string applicationName, string sessionId) | `public IWebContext Get(string applicationName, string sessionId)` | Always fetches the context for the given application/session from the remote service and refreshes the session cache; see the "Get a web context by application and session" operation. |
| Save(string applicationName, string sessionId, IWebContext context) | `public void Save(string applicationName, string sessionId, IWebContext context)` | Persists a context to the remote service without touching the session cache; used during cross-application navigation. |

## Behavioral notes
- The remote WCF channel is opened and disposed per call (`using (var client = new WebContextServiceClient(serviceUrl))`), so a call never leaves an open channel behind.

## Constraints and usage notes
- Requires the `webContextServiceUrl` environment setting to be resolvable in the current session; a missing value surfaces as a WCF endpoint construction failure on first use, not at construction time.

## Sources
- `src/Web/WebContextService.cs`
