This document focuses on troubleshooting scenarios where applications hosted on IIS do not send data to Atatus.

Applies To

  • IIS 8 and above
  • ASP.NET Core applications
  • ASP.NET (.NET Framework) applications

1. Confirm Application Type in IIS

Identify whether the application is ASP.NET Core or .NET Framework.

Indicator Type .NET Framework Application ASP.NET Core Application
Entry point Global.asax Application entry point is a .dll
Configuration file Web.config Web.config with AspNetCoreModuleV2
Startup structure App_Start folder No App_Start folder
Package management packages.config No packages.config
Global.asax usage Present Not present

2. Verify IIS Application Pool Configuration

Incorrect Application Pool settings are the most common cause of missing data. If these values are misconfigured, the Atatus profiler will fail to attach, and no telemetry will be collected.

Open IIS Manager and select your application pool. Click Advanced Settings to verify:

Setting .NET Framework Value ASP.NET Core Value Notes
.NET CLR Version v4.0 No Managed Code Mismatch causes profiler load failure
Pipeline Mode Integrated Integrated Classic mode is not supported
Enable 32-Bit Applications False False The .NET profiler does not support 32-bit environments.
Managed Runtime Version v4.0 (empty) Ensure it matches your app framework
Identity ApplicationPoolIdentity ApplicationPoolIdentity Must have file permissions

After making changes, restart the IIS.

3. Ensure Required IIS Features Are Enabled (.NET Framework Only)

Navigate to:

Windows Features → Internet Information Services → Application Development Features

Ensure the following are enabled:

  • ASP.NET 4.x
  • .NET Extensibility 4.x
  • ISAPI Extensions
  • ISAPI Filters

After enabling, restart the server.

Note: If these features are missing, IIS treats the application as static content, and no profiling occurs.

4. Verify Environment Variables in IIS Scope

Atatus requires specific environment variables to be available at the IIS Application Pool level or higher.

Option 1: Check via applicationHost.config

Open the IIS configuration file:

%windir%\system32\inetsrv\config\applicationHost.config

Verify Atatus-related environment variables are defined. They should appear under one of:

  • <applicationPoolDefaults> (applies to all app pools)
  • Your specific <applicationPool> element (applies only to that pool)

Option 2: Check via PowerShell

Run the following commands to inspect the App Pool environment variables:

copy
icon/buttons/copy
cd $env:SystemRoot\System32\inetsrv
.\appcmd.exe list apppool "<APP_POOL_NAME>" /config /xml

5. Enable Debug Logging

Enable debug logging to collect detailed troubleshooting information by setting the following environment variables at the Application Pool level.

Debug Options

Environment Variable Purpose
ATATUS_LOG_LEVEL=debug Enables debug logs for the Atatus agent
OTEL_LOG_LEVEL=debug Enables debug logs for the Atatus profiler

Restart the application after enabling debug logging.

6. Validate Profiler Load (Event Viewer + IIS Worker Process)

This step confirms whether the Atatus profiler attempted to load and why it failed.

Step 1: Check Windows Event Viewer

Open:

Event Viewer → Windows Logs → Application

Look for errors like:

Error 1: Loading profiler failed during CoCreateInstance

  • Cause: 32-bit / 64-bit mismatch between IIS and the profiler
  • Solution: Match the profiler bitness to your IIS process architecture (see Step 2)

Error 2: The system cannot find the file specified

  • Cause: Environment variables pointing to wrong profiler DLL path
  • Solution: Verify file exists at the path specified in COR_PROFILER_PATH

Error 3: Access denied

  • Cause: IIS Application Pool identity lacks read permissions on profiler files
  • Solution: See "Step 3: Verify File Permissions" below

What HRESULT codes mean:

  • 0x800700C1 = Bad Image Format (binary incompatible)
  • 0x80070005 = Access Denied
  • 0x80070002 = File Not Found

Step 2: Verify File Permissions

The IIS Application Pool identity must have Read + Read & Execute permissions on the Atatus profiler files.

To check/set permissions:

  1. Navigate to the extracted Atatus profiler folder — the directory set in ATATUS_PROFILER_HOME (e.g., C:\atatus)
  2. Right-click the folder → PropertiesSecurity tab
  3. Click Edit → Select your Application Pool Identity (usually IIS AppPool\<PoolName>)
  4. Ensure these permissions are Allowed:
    • Read
    • Read & Execute
    • List Folder Contents

Step 3: Confirm Profiler DLL Loaded in Worker Process

Use Process Explorer to inspect the IIS worker process:

  • Process: w3wp.exe
  • Confirm whether atatus_profiler.dll is loaded

If the DLL is not listed, the profiler could not attach.

Common Reasons and What to Check

  • 32-bit / 64-bit mismatch between IIS and the profiler
  • Missing Microsoft Visual C++ Redistributable on the server
  • Corrupt or incomplete profiler files (rare)

Still Having Issues?

Collect the following information and contact Atatus Support at success@atatus.com:

  • Event Viewer logs: Export Application logs from around the time of the issue
  • Diagnostic information:
    • Atatus Agent version installed
    • Application framework (.NET Framework version or .NET Core version)
    • Server OS version and architecture (32-bit or 64-bit)
    • IIS version
    • Application Pool identity and settings
    • Whether data ever appeared in Atatus for this application
  • Process Explorer output: Screenshot showing w3wp.exe and loaded DLLs (if possible)