---
title: Activation and hosting
summary: Marker files, codebehind mapping, host inventory, and deployment variants.
status: draft
owner: Employer Systems Team
last_reviewed: 2026-09-10
---

# Activation and hosting

`SAIF.Employer.Lookup.Service` publishes four operations through three `.asmx` marker files, which are served by IIS under the `EmployerLookupService` virtual directory, and it produces two deployable variants: an internal build that exposes all three services and an external build that omits the code table service.

## Activation mechanism

| Aspect | Finding |
| --- | --- |
| Mechanism | `.asmx` marker file + codebehind |
| Marker files | 3 |
| Directive form | `<%@ WebService Language="vb" CodeBehind="EmployerLookup.asmx.vb" Class="SAIF.Employer.Lookup.Service.EmployerLookup" %>` |
| Route table | Not used |
| `<system.serviceModel>` | Not present |
| Address composition | Application base address + the marker file's path within the project |

`Global.asax` configures logging at application start and registers nothing else, so the marker files are the only way a request reaches a service class.

## Marker file inventory

| Marker file | Language | Codebehind | Class | Address suffix |
| --- | --- | --- | --- | --- |
| `EmployerLookup.asmx` | `vb` | `EmployerLookup.asmx.vb` | `SAIF.Employer.Lookup.Service.EmployerLookup` | `/EmployerLookup.asmx` |
| `CoverageCheck.asmx` | `vb` | `CoverageCheck.asmx.vb` | `SAIF.Employer.Lookup.Service.CoverageVerifier` | `/CoverageCheck.asmx` |
| `Reference/CodeTables.asmx` | `vb` | `CodeTables.asmx.vb` | `SAIF.Employer.Lookup.Service.CodeTableService` | `/Reference/CodeTables.asmx` |

Two of the three marker file names differ from the class they activate. A caller addresses `CoverageCheck.asmx`, and the class that answers is `CoverageVerifier`. `Reference/CodeTables.asmx` carries its subfolder in the address.

## Activation diagram

The following diagram visualizes how a request reaches an operation.

```mermaid
flowchart TD
    REQ["Caller request<br>/EmployerLookupService/EmployerLookup.asmx"] --> IIS["IIS maps .asmx<br>to the ASP.NET handler"]
    IIS --> DIRECTIVE["WebService directive<br>names SAIF.Employer.Lookup.Service.EmployerLookup"]
    DIRECTIVE --> INST["EmployerLookup constructed<br>per request"]
    INST --> ACTION{"SOAP action"}
    ACTION -->|"FindEmployerByPolicyNumber"| WM["WebMethod invoked"]
    ACTION -->|"GetEmployerContacts"| WM
    ACTION -->|"Unknown"| FAULT["SOAP fault"]
    WM --> RESP["Response message"]
```

## Metadata and test surface

| Aspect | Finding |
| --- | --- |
| WSDL document | `EmployerLookup.asmx?wsdl`, `CoverageCheck.asmx?wsdl`, `Reference/CodeTables.asmx?wsdl` |
| ASP.NET test page | Enabled (`HttpGet` / `HttpPost` protocols) |
| Documentation protocol | Enabled |

`Web.config` does not declare a `<webServices><protocols>` element and does not remove the documentation protocol, so anyone who can reach the service can read each WSDL and invoke every operation from the generated test page. This is raised in Tech debt.

## Host inventory

This repository contains more than one deployable project. Each web service project has its own document set; this table places this one among them.

| Project | Kind | Services | Document set |
| --- | --- | --- | --- |
| `SAIF.Employer.Lookup.Service` | Web service | `EmployerLookup`, `CoverageVerifier`, `CodeTableService` | This set |
| `SAIF.Employer.Lookup.Service.X86` | Web service | `CoverageVerifier` | SAIF.Employer.Lookup.Service.X86 |
| `SAIF.Employer.Lookup.Data` | Class library | - | Embedded library |
| `SAIF.Employer.Lookup.Service.Tests` | Test project | - | Not documented |

## Services hosted in more than one host

| Service class | Also deployed by | Implementation shared | Primary document set |
| --- | --- | --- | --- |
| `CoverageVerifier` | `SAIF.Employer.Lookup.Service.X86` | Same file (linked from `src/SAIF.Employer.Lookup.Service/CoverageCheck.asmx.vb`) | SAIF.Employer.Lookup.Service |

The x86 host compiles the same codebehind file into its own assembly, so there is one implementation and two deployments.

## Deployment variants

| Variant | Build configuration | Artifact | Config transform | Audience | Notes |
| --- | --- | --- | --- | --- | --- |
| Internal | `Release` | `SAIF.Employer.Lookup.Service.Internal.zip` | `Web.Release.config` | SAIF applications on the corporate network | All three services are published |
| External | `ReleaseExternal` | `SAIF.Employer.Lookup.Service.External.zip` | `Web.ReleaseExternal.config` | Partner systems outside the corporate network | `Reference/CodeTables.asmx` is excluded from the build in the project file |

### Variant differences

| Setting or behavior | Internal | External | Source |
| --- | --- | --- | --- |
| `MaxSearchResults` (`appSettings`) | 500 | 25 | `src/SAIF.Employer.Lookup.Service/Web.Release.config`, `src/SAIF.Employer.Lookup.Service/Web.ReleaseExternal.config` |
| Services exposed | All | `EmployerLookup`, `CoverageVerifier` | `src/SAIF.Employer.Lookup.Service/SAIF.Employer.Lookup.Service.vbproj` |

## IIS configuration

| Aspect | Finding |
| --- | --- |
| Site / virtual directory | Virtual directory `EmployerLookupService` under `Default Web Site` |
| Application pool | `SAIF-EmployerLookup` (.NET CLR v4.0) |
| Platform target | Any CPU |
| `httpErrors` mode | Not declared |
| Custom modules or handlers | None |

## Related documentation
- Index
- Overview
- Architecture
- Operations
- Faults and error pipeline
- Authentication and authorization
- Dependencies
- Configuration
- Operations and processes
- Business rules
- Data model
- Operational runbook
- Tech debt
- Embedded libraries

## Sources
- `src/SAIF.Employer.Lookup.Service/EmployerLookup.asmx`
- `src/SAIF.Employer.Lookup.Service/EmployerLookup.asmx.vb`
- `src/SAIF.Employer.Lookup.Service/CoverageCheck.asmx`
- `src/SAIF.Employer.Lookup.Service/CoverageCheck.asmx.vb`
- `src/SAIF.Employer.Lookup.Service/Reference/CodeTables.asmx`
- `src/SAIF.Employer.Lookup.Service/Reference/CodeTables.asmx.vb`
- `src/SAIF.Employer.Lookup.Service/Global.asax`
- `src/SAIF.Employer.Lookup.Service/Web.config`
- `src/SAIF.Employer.Lookup.Service/Web.Release.config`
- `src/SAIF.Employer.Lookup.Service/Web.ReleaseExternal.config`
- `src/SAIF.Employer.Lookup.Service/SAIF.Employer.Lookup.Service.vbproj`
- `src/SAIF.Employer.Lookup.Service.X86/SAIF.Employer.Lookup.Service.X86.vbproj`
- `Pipelines/employer-lookup-release-vars.yml`
