'How do I properly use puppeteer-sharp with server-side Blazor / SignalR?
I can get puppeteer-sharp (with headless both true and false) to obtain server-side-rendered Blazor pages, but it looks like I'm only getting the server pre-render and NOT any client-side initiated events (e.g., for instance the second OnInitialized, or any OnAfterRender, OnAfterRenderAsync).
My best guess is that Signal R is not working properly using puppeteer-sharp.
I do this:
using var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();
await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions {
Headless = true
});
await using var page = await browser.NewPageAsync();
await page.SetJavaScriptEnabledAsync(true);
await page.GoToAsync("<<mypage>>,
new NavigationOptions {
WaitUntil = new WaitUntilNavigation[] {
WaitUntilNavigation.Load
}
}
);
string sContent = await page.GetContentAsync();
Is there any way to get ALL of the Blazor events to fire properly, or any good discussion of this on the web somewhere?
Thanks in advance!
Solution 1:[1]
The answer here was that puppeteer-sharp is actually working just fine with SignalR in all cases.
I really had a separate, more general problem with my authorization settings where the fallback was improperly set. In that case, pages that supposedly did not require authorization were really only providing a single server-prerender (and no later SignalR-enabled onParameterSet, etc.). This incorrect behavior was the same in both a manual browser windows and puppeteer.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | brian_arm |
