Table of Contents

Choose your version

SESAR Webhook comes in two versions, which share the same processing code.

Version Repository Platform
.NET SESARWebhookCore .NET 9 (net9.0-windows), ASP.NET Core, on Windows
.NET Framework SESARWebhook .NET Framework 4.7.2, ASP.NET Web API 2, on IIS

Prefer the .NET version for any new deployment. It is the one this help center documents, and its .NET reference is generated from its code.

What does not change

Both versions share:

  • the processing: HashKey check, manifest decryption, choice of the connector or handler;
  • the routes of the HTTP API, their verbs and the expected body;
  • IWebhookHandler, WebhookHandlerBase and the loading of handler DLLs;
  • the File system, Zoho CRM and Dynamics 365 connectors, and the OAuth2RefreshTokenHelper helper;
  • the connectors.secrets.json secrets file, its structure and its DPAPI encryption.

Differences

Topic .NET Framework .NET
Hosting IIS only Kestrel, or IIS with the ASP.NET Core 9 Hosting Bundle
Build nuget restore, then msbuild dotnet build, dotnet publish
Configuration Flat keys in Web.config: <add key="Connector:filesystem:Enabled" value="true" /> JSON sections in appsettings.json: "Connector": { "filesystem": { "Enabled": "true" } }, which environment variables can override
DPAPI scope as shipped LocalMachine in Web.config CurrentUser in appsettings.json
Maximum request size 100 MB, set in Web.config Default limit of Kestrel (30,000,000 bytes) or IIS
SharePoint connector SharePoint REST API: uploads the manifest as JSON Microsoft Graph: uploads the decrypted email and attachments. See SharePoint Online
OAuth2ClientCredentialsHelper.ForSharePoint SharePoint site scope Microsoft Graph scope
ApiKeyHelper.InQueryString Replaces a parameter with the same name Adds the parameter, even if it already exists
Internal errors Message hidden from remote clients Message returned in the body ({"Error": "..."})
SDK used SecureExchanges SecureExchanges.NetCore
Assembly names SESARWebHook.Core, etc. SESARWebHook.Core.NetCore, etc. Namespaces do not change

A handler built for one version does not load in the other: the referenced assemblies do not have the same name.

Move from .NET Framework to .NET

  1. Hosting. Install the ASP.NET Core 9 runtime, or the Hosting Bundle on IIS, then publish the application with dotnet publish. Set up HTTPS (IIS binding or Kestrel certificate) and, if the address changes, update it in SESAR. See Deploy on Windows.
  2. Configuration. Copy each Web.config key to appsettings.json, as nested sections, and double the backslashes in paths. Check the DPAPI scope: Web.config shipped with LocalMachine, appsettings.json ships with CurrentUser.
  3. Secrets. Drop a plain-text version of connectors.secrets.json, taken from your secret store: the application encrypts it at startup. The old encrypted file can only be read with the same machine, the same scope, the same entropy and, with CurrentUser, the same account. See Secrets and DPAPI.
  4. Handlers. Rebuild them for net9.0-windows, against SESARWebHook.Core.NetCore and SecureExchanges.NetCore. Remove any dependency on System.Web and ConfigurationManager. Revalidate those that use ForSharePoint or InQueryString.
  5. SharePoint. The connector works differently: redo its configuration and test it before production.
  6. Error responses. If a system reads the webhook's responses, check it: their format changes.