Skip to content

Commit f5ae59e

Browse files
committedAug 16, 2023
feat: update to Fusion v6.1.13 + fix #28
1 parent d861a95 commit f5ae59e

39 files changed

+119
-155
lines changed
 

‎docs/tutorial/Part04.cs

-4
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@ public static IHost CreateHost()
8686
fusion.AddWebServer();
8787
// Registering Compute Service
8888
fusion.AddService<ICounterService, CounterService>();
89-
services.AddRouting();
90-
// And its controller
91-
services.AddControllers().AddApplicationPart(Assembly.GetExecutingAssembly());
9289
});
9390
builder.ConfigureWebHost(webHost => {
9491
webHost.UseKestrel();
@@ -97,7 +94,6 @@ public static IHost CreateHost()
9794
app.UseWebSockets();
9895
app.UseRouting();
9996
app.UseEndpoints(endpoints => {
100-
endpoints.MapControllers();
10197
endpoints.MapRpcWebSocketServer();
10298
});
10399
});

‎docs/tutorial/Part04.md

+2-8
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,15 @@ public static IHost CreateHost()
106106
fusion.AddWebServer();
107107
// Registering Compute Service
108108
fusion.AddService<ICounterService, CounterService>();
109-
services.AddRouting();
110-
// And its controller
111-
services.AddControllers().AddApplicationPart(Assembly.GetExecutingAssembly());
112109
});
113110
builder.ConfigureWebHost(b =>
114111
{
115112
b.UseKestrel();
116113
b.UseUrls("http://localhost:50050/");
117-
b.Configure((ctx, app) =>
118-
{
114+
b.Configure((ctx, app) => {
119115
app.UseWebSockets();
120116
app.UseRouting();
121-
app.UseEndpoints(endpoints =>
122-
{
123-
endpoints.MapControllers();
117+
app.UseEndpoints(endpoints => {
124118
endpoints.MapRpcWebSocketServer();
125119
});
126120
});

‎docs/tutorial/Part06.md

+4-5
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,9 @@ public void ConfigureServices(IServiceCollection services)
210210
// Fusion services
211211
var fusion = services.AddFusion();
212212

213-
// Web
213+
// ASP.NET Core / Blazor services
214214
services.AddRazorPages();
215-
services.AddServerSideBlazor();
215+
services.AddServerSideBlazor(o => o.DetailedErrors = true);
216216
}
217217

218218
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -252,8 +252,8 @@ public void ConfigureServices(IServiceCollection services)
252252
fusion.AddWebServer();
253253

254254
// ASP.NET Core / Blazor services
255-
services.AddRouting();
256-
services.AddServerSideBlazor();
255+
services.AddRazorPages();
256+
services.AddServerSideBlazor(o => o.DetailedErrors = true);
257257
}
258258

259259
public void Configure(IApplicationBuilder app, ILogger<Startup> log)
@@ -272,7 +272,6 @@ public void Configure(IApplicationBuilder app, ILogger<Startup> log)
272272
app.UseRouting();
273273
app.UseEndpoints(endpoints => {
274274
endpoints.MapRpcWebSocketServer();
275-
endpoints.MapControllers();
276275
endpoints.MapFallbackToPage("/_Host"); // Typically needed for Blazor WASM
277276
});
278277
}

‎docs/tutorial/Part11.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ The following code snippet shows how you embed it into `Host.cshtml`:
214214
await ServerAuthHelper.UpdateAuthState(HttpContext);
215215
var authSchemas = await ServerAuthHelper.GetSchemas(HttpContext);
216216
var sessionId = ServerAuthHelper.Session.Id.Value;
217-
var isServerSideBlazor = BlazorSwitchEndpoint.IsServerSideBlazor(HttpContext);
217+
var isBlazorServer = BlazorModeEndpoint.IsBlazorServer(HttpContext);
218218
var isCloseWindowRequest = ServerAuthHelper.IsCloseWindowRequest(HttpContext, out var closeWindowFlowName);
219219
Layout = null;
220220
}
@@ -320,7 +320,7 @@ app.UseEndpoints(endpoints => {
320320
endpoints.MapBlazorHub();
321321
endpoints.MapRpcWebSocketServer();
322322
endpoints.MapFusionAuth();
323-
endpoints.MapFusionBlazorSwitch();
323+
endpoints.MapFusionBlazorMode();
324324
// endpoints.MapControllers();
325325
endpoints.MapFallbackToPage("/_Host"); // Maps every unmapped route to _Host.cshtml
326326
});
@@ -408,8 +408,8 @@ All of this implies you also need a bit special logic in `_Host.cshtml` to spawn
408408
@{
409409
using var prerendering = BlazorCircuitContext.Prerendering();
410410
var prerenderedApp = await Html.RenderComponentAsync<App>(
411-
isServerSideBlazor ? RenderMode.ServerPrerendered : RenderMode.WebAssemblyPrerendered,
412-
isServerSideBlazor ? new { SessionId = sessionId } : null);
411+
isBlazorServer ? RenderMode.ServerPrerendered : RenderMode.WebAssemblyPrerendered,
412+
isBlazorServer ? new { SessionId = sessionId } : null);
413413
}
414414
@(prerenderedApp)
415415
</app>

‎docs/tutorial/Part13.md

+5-4
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,13 @@ Replace the following _complete_ words:
6464
- `AddCommandService` -> `AddService`
6565
- `LatestNonErrorValue` -> `LastNonErrorValue`
6666
- `LatestNonErrorComputed` -> `LastNonErrorComputed`
67-
- `BlazorModeController.IsServerSideBlazor(HttpContext)` -> `BlazorSwitchEndpoint.IsServerSideBlazor(HttpContext)`
67+
- `Session.Null` -> `null!`
68+
- `ISessionProvider` -> `ISessionResolver` + maybe rename related variables/properties. `ISessionResolver` is the same as `ISessionProvider` in pre-v6.1, and old `ISessionResolver` is gone
69+
- `BlazorModeController.IsServerSideBlazor(HttpContext)` -> `BlazorModeEndpoint.IsBlazorServer(HttpContext)`
6870
- `MapFusionWebSocketServer` -> `MapRpcWebSocketServer`
71+
- `MapFusionBlazorSwitch` -> `MapFusionBlazorMode`
6972
- `AddBackendStatus` -> `AddRpcPeerStateMonitor`
70-
- `Session.Null` -> `null!`
7173
- `StateHasChangedAsync` -> `NotifyStateHasChanged`
72-
- `ISessionProvider` -> `ISessionResolver` + maybe rename related variables/properties. `ISessionResolver` is the same as `ISessionProvider` in pre-v6.1, and old `ISessionResolver` is gone
7374

7475

7576
## Server-side changes
@@ -103,7 +104,7 @@ fusionServer.ConfigureServerAuthHelper(_ => new() {
103104
```cs
104105
endpoints.MapRpcWebSocketServer(); // Absolutely necessary
105106
endpoints.MapFusionAuth(); // Optional - maps /signIn & /signOut endpoints
106-
endpoints.MapFusionBlazorSwitch(); // Optional - maps /fusion/blazorMode/{isServerSideBlazor}
107+
endpoints.MapFusionBlazorMode(); // Optional - maps /fusion/blazorMode/{isBlazorServer}
107108
```
108109

109110
And if you prefer to use controllers for Fusion authentication & Blazor mode switch, add this instead:

‎docs/tutorial/Tutorial.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</ItemGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="Stl.Fusion.Server" Version="6.2.12" />
21+
<PackageReference Include="Stl.Fusion.Server" Version="6.2.13" />
2222
<PackageReference Include="System.CommandLine" Version="2.0.0-beta2.21617.1" />
2323
<PackageReference Include="System.CommandLine.DragonFruit" Version="0.4.0-alpha.21617.1" />
2424
</ItemGroup>
@@ -27,7 +27,7 @@
2727
<!-- Roslyn generators/analyzers -->
2828
<ItemGroup>
2929
<PackageReference Include="MemoryPack.Generator" Version="1.9.16" />
30-
<PackageReference Include="Stl.Generators" Version="6.2.12" />
30+
<PackageReference Include="Stl.Generators" Version="6.2.13" />
3131
</ItemGroup>
3232

3333
</Project>

‎src/Benchmark/Benchmark.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@
2727
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.10" />
2828
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.10" />
2929
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.4" />
30-
<PackageReference Include="Stl.Fusion.Server" Version="6.2.12" />
31-
<PackageReference Include="Stl.RestEase" Version="6.2.12" />
30+
<PackageReference Include="Stl.Fusion.Server" Version="6.2.13" />
31+
<PackageReference Include="Stl.RestEase" Version="6.2.13" />
3232
</ItemGroup>
3333

3434
<!-- Roslyn generators/analyzers -->
3535
<ItemGroup>
3636
<PackageReference Include="MemoryPack.Generator" Version="1.9.16" />
3737
<PackageReference Include="RestEase.SourceGenerator" Version="1.6.4" />
38-
<PackageReference Include="Stl.Generators" Version="6.2.12" />
38+
<PackageReference Include="Stl.Generators" Version="6.2.13" />
3939
</ItemGroup>
4040

4141
</Project>

‎src/Blazor/Abstractions/Abstractions.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
<ItemGroup>
1313
<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="7.0.10" />
1414
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0-preview.7.23375.6" />
15-
<PackageReference Include="Stl.Fusion" Version="6.2.12" />
16-
<PackageReference Include="Stl.Fusion.Ext.Contracts" Version="6.2.12" />
15+
<PackageReference Include="Stl.Fusion" Version="6.2.13" />
16+
<PackageReference Include="Stl.Fusion.Ext.Contracts" Version="6.2.13" />
1717
</ItemGroup>
1818

1919
<!-- Roslyn generators/analyzers -->
2020
<ItemGroup>
2121
<PackageReference Include="MemoryPack.Generator" Version="1.9.16" />
22-
<PackageReference Include="Stl.Generators" Version="6.2.12" />
22+
<PackageReference Include="Stl.Generators" Version="6.2.13" />
2323
</ItemGroup>
2424

2525
</Project>

‎src/Blazor/ConsoleClient/ConsoleClient.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="Stl.Fusion" Version="6.2.12" />
13+
<PackageReference Include="Stl.Fusion" Version="6.2.13" />
1414
</ItemGroup>
1515

1616
<ItemGroup>

‎src/Blazor/Server/Pages/_Host.cshtml

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
await ServerAuthHelper.UpdateAuthState(HttpContext);
1212
var authSchemas = await ServerAuthHelper.GetSchemas(HttpContext);
1313
var sessionId = ServerAuthHelper.Session.Id.Value;
14-
var isServerSideBlazor = BlazorSwitchEndpoint.IsServerSideBlazor(HttpContext);
14+
var isBlazorServer = BlazorModeEndpoint.IsBlazorServer(HttpContext);
1515
var isCloseWindowRequest = ServerAuthHelper.IsCloseWindowRequest(HttpContext, out var closeWindowFlowName);
1616
Layout = null;
1717
}
@@ -46,7 +46,7 @@
4646
@{
4747
using var prerendering = BlazorCircuitContext.Prerendering();
4848
var prerenderedApp = await Html.RenderComponentAsync<App>(
49-
isServerSideBlazor ? RenderMode.ServerPrerendered : RenderMode.WebAssemblyPrerendered,
49+
isBlazorServer ? RenderMode.ServerPrerendered : RenderMode.WebAssemblyPrerendered,
5050
new { SessionId = sessionId });
5151
}
5252
@(prerenderedApp)
@@ -65,7 +65,7 @@
6565

6666
<partial name="Blazorise.Body" />
6767
<script type="module" src="./js/app.js"></script>
68-
<script src="_framework/blazor.@(isServerSideBlazor ? "server" : "webassembly").js"></script>
68+
<script src="_framework/blazor.@(isBlazorServer ? "server" : "webassembly").js"></script>
6969
}
7070
</body>
7171
</html>

‎src/Blazor/Server/Server.csproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<PackageReference Include="AspNet.Security.OAuth.GitHub" Version="7.0.2" />
22+
<PackageReference Include="AspNet.Security.OAuth.GitHub" Version="7.0.4" />
2323
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.2.0" />
2424
<PackageReference Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="8.0.0-preview.7.23375.9" />
2525
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.0-preview.7.23375.9" />
2626
<PackageReference Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="7.0.10" />
2727
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.10" />
2828
<PackageReference Include="SixLabors.ImageSharp" Version="3.0.1" />
2929
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta13" />
30-
<PackageReference Include="Stl.Fusion.Server" Version="6.2.12" />
31-
<PackageReference Include="Stl.Fusion.EntityFramework" Version="6.2.12" />
32-
<PackageReference Include="Stl.RestEase" Version="6.2.12" />
30+
<PackageReference Include="Stl.Fusion.Server" Version="6.2.13" />
31+
<PackageReference Include="Stl.Fusion.EntityFramework" Version="6.2.13" />
32+
<PackageReference Include="Stl.RestEase" Version="6.2.13" />
3333
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
3434
</ItemGroup>
3535

‎src/Blazor/Server/Startup.cs

+3-13
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,8 @@ public void ConfigureServices(IServiceCollection services)
148148
options.CorrelationCookie.SameSite = SameSiteMode.Lax;
149149
});
150150

151-
// Web
152-
services.Configure<ForwardedHeadersOptions>(options => {
153-
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
154-
options.KnownNetworks.Clear();
155-
options.KnownProxies.Clear();
156-
});
157-
services.AddRouting();
158-
services.AddMvc().AddApplicationPart(Assembly.GetExecutingAssembly());
151+
// ASP.NET Core / Blazor services
152+
services.AddRazorPages();
159153
services.AddServerSideBlazor(o => o.DetailedErrors = true);
160154

161155
// Shared UI services
@@ -196,10 +190,6 @@ public void Configure(IApplicationBuilder app, ILogger<Startup> log)
196190
app.UseHsts();
197191
}
198192
app.UseHttpsRedirection();
199-
app.UseForwardedHeaders(new ForwardedHeadersOptions {
200-
ForwardedHeaders = ForwardedHeaders.XForwardedProto
201-
});
202-
203193
app.UseWebSockets(new WebSocketOptions() {
204194
KeepAliveInterval = TimeSpan.FromSeconds(30),
205195
});
@@ -216,7 +206,7 @@ public void Configure(IApplicationBuilder app, ILogger<Startup> log)
216206
endpoints.MapBlazorHub();
217207
endpoints.MapRpcWebSocketServer();
218208
endpoints.MapFusionAuth();
219-
endpoints.MapFusionBlazorSwitch();
209+
endpoints.MapFusionBlazorMode();
220210
endpoints.MapFallbackToPage("/_Host");
221211
});
222212
}

‎src/Blazor/UI/Shared/BarBlazorMode.razor

+3-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
@inject IJSRuntime JS
66

77
<BarDropdown Class="@CssClass">
8-
<BarDropdownToggle>@(_isPrerendering ? "Loading..." : GetModeName(_isServerSideBlazor))</BarDropdownToggle>
8+
<BarDropdownToggle>@(_isPrerendering ? "Loading..." : GetModeName(BlazorModeHelper.IsBlazorServer))</BarDropdownToggle>
99
<BarDropdownMenu RightAligned="true">
1010
@foreach(var mode in new [] {true, false}) {
1111
<BarDropdownItem Clicked="@(() => BlazorModeHelper.ChangeMode(mode))">@GetModeName(mode)</BarDropdownItem>
@@ -15,7 +15,6 @@
1515

1616
@code {
1717
private bool _isPrerendering;
18-
private bool _isServerSideBlazor = BlazorModeHelper.IsServerSideBlazor;
1918

2019
[Parameter]
2120
public string CssClass { get; set; } = "";
@@ -32,6 +31,6 @@
3231
_isPrerendering = fClientProxy != null && clientProxy == null;
3332
}
3433

35-
private string GetModeName(bool isServerSideBlazor)
36-
=> isServerSideBlazor ? "Blazor Server" : "Blazor WASM";
34+
private string GetModeName(bool isBlazorServer)
35+
=> isBlazorServer ? "Blazor Server" : "Blazor WASM";
3736
}

‎src/Blazor/UI/Shared/BlazorModeSwitch.razor

+3-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
} else {
1010
<RadioGroup Class="@CssClass" TValue="bool"
1111
Name="BlazorMode"
12-
CheckedValue="@(BlazorModeHelper.IsServerSideBlazor)"
12+
CheckedValue="@(BlazorModeHelper.IsBlazorServer)"
1313
CheckedValueChanged="@(v => BlazorModeHelper.ChangeMode(!v))">
1414
@foreach(var mode in new [] {true, false}) {
1515
<Radio TValue="bool" Value="@mode">@GetModeName(mode)</Radio>
@@ -19,7 +19,6 @@
1919

2020
@code {
2121
private bool _isPrerendering;
22-
private bool _isServerSideBlazor = BlazorModeHelper.IsServerSideBlazor;
2322

2423
[Parameter]
2524
public string CssClass { get; set; } = "";
@@ -36,6 +35,6 @@
3635
_isPrerendering = fClientProxy != null && clientProxy == null;
3736
}
3837

39-
private string GetModeName(bool isServerSideBlazor)
40-
=> isServerSideBlazor ? "Blazor Server" : "Blazor WebAssembly";
38+
private string GetModeName(bool isBlazorServer)
39+
=> isBlazorServer ? "Blazor Server" : "Blazor WebAssembly";
4140
}

‎src/Blazor/UI/UI.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@
3838
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.0-preview.7.23375.9" />
3939
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.0-preview.7.23375.9" PrivateAssets="all" />
4040
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0-preview.7.23375.6" />
41-
<PackageReference Include="Stl.Fusion.Blazor" Version="6.2.12" />
42-
<PackageReference Include="Stl.Fusion.Blazor.Authentication" Version="6.2.12" />
43-
<PackageReference Include="Stl.Fusion.Ext.Contracts" Version="6.2.12" />
41+
<PackageReference Include="Stl.Fusion.Blazor" Version="6.2.13" />
42+
<PackageReference Include="Stl.Fusion.Blazor.Authentication" Version="6.2.13" />
43+
<PackageReference Include="Stl.Fusion.Ext.Contracts" Version="6.2.13" />
4444
<PackageReference Include="UAParser" Version="3.1.46" />
4545
</ItemGroup>
4646

‎src/HelloBlazorHybrid/Abstractions/Abstractions.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
</PropertyGroup>
1212

1313
<ItemGroup>
14-
<PackageReference Include="Stl.Fusion" Version="6.2.12" />
14+
<PackageReference Include="Stl.Fusion" Version="6.2.13" />
1515
</ItemGroup>
1616

1717
<!-- Roslyn generators/analyzers -->
1818
<ItemGroup>
1919
<PackageReference Include="MemoryPack.Generator" Version="1.9.16" />
20-
<PackageReference Include="Stl.Generators" Version="6.2.12" />
20+
<PackageReference Include="Stl.Generators" Version="6.2.13" />
2121
</ItemGroup>
2222

2323
</Project>
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
using System.Runtime.Serialization;
2+
using MemoryPack;
3+
14
namespace Samples.HelloBlazorHybrid.Abstractions;
25

3-
public class WeatherForecast
6+
[DataContract, MemoryPackable(GenerateType.VersionTolerant)]
7+
public partial class WeatherForecast
48
{
5-
public DateTime Date { get; set; }
6-
public int TemperatureC { get; set; }
7-
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
8-
public string Summary { get; set; } = "";
9+
[DataMember, MemoryPackOrder(0)] public DateTime Date { get; set; }
10+
[DataMember, MemoryPackOrder(1)] public int TemperatureC { get; set; }
11+
[DataMember, MemoryPackOrder(2)] public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
12+
[DataMember, MemoryPackOrder(3)] public string Summary { get; set; } = "";
913
}

0 commit comments

Comments
 (0)
Please sign in to comment.