This allows you to pass a request to Suave.IO and if suave doesn't handle it fall back to asp.net.
A lot of inspiration has come from https://github.com/tamizhvendan/Suave.Azure.Functions
To install Suave.AspNetHttpModule, add the following to your paket.dependencies:
source https://nuget.org/api/v2
nuget Suave.AspNetHttpModule
Or you can use the legacy NuGet command line Package Manager Console:
PM> Install-Package Suave.AspNetHttpModule
Create a new type that will be visible to your asp.net application either in your Suave F# App
namespace SampleSuaveLib
open System.Web
open Suave.AspNetHttpModule
type Handler() =
interface IHttpModule with
member __.Init application = handleApplication App.app (* <-- your root web part *) application
member __.Dispose() = ignore()
or in your asp.net app (Such as the App_Start folder):
using System.Web;
namespace SampleSuaveWeb.App_Start
{
public class AppHandler : IHttpModule
{
public void Init(HttpApplication context)
{
Suave.AspNetHttpModule.handleApplication(SampleSuaveLib.App.app, context);
}
public void Dispose() { }
}
}
Then add the handler to the web config:
<modules>
...
<add name="SampleSuaveLib" type="SampleSuaveLib.Handler, SampleSuaveLib" />
...
</modules>