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:
HashKeycheck, manifest decryption, choice of the connector or handler; - the routes of the HTTP API, their verbs and the expected body;
IWebhookHandler,WebhookHandlerBaseand the loading of handler DLLs;- the File system, Zoho CRM and Dynamics 365 connectors, and the
OAuth2RefreshTokenHelperhelper; - the
connectors.secrets.jsonsecrets 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
- 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. - Configuration. Copy each
Web.configkey toappsettings.json, as nested sections, and double the backslashes in paths. Check the DPAPI scope:Web.configshipped withLocalMachine,appsettings.jsonships withCurrentUser. - 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, withCurrentUser, the same account. See Secrets and DPAPI. - Handlers. Rebuild them for
net9.0-windows, againstSESARWebHook.Core.NetCoreandSecureExchanges.NetCore. Remove any dependency onSystem.WebandConfigurationManager. Revalidate those that useForSharePointorInQueryString. - SharePoint. The connector works differently: redo its configuration and test it before production.
- Error responses. If a system reads the webhook's responses, check it: their format changes.