1+ using Asp2017 . Server . Helpers ;
12using System . Threading . Tasks ;
23using Microsoft . AspNetCore . Mvc ;
34
910using Microsoft . AspNetCore . Http ;
1011using System . Diagnostics ;
1112using System ;
13+ using Asp2017 . Server . Models ;
1214
1315namespace AspCoreServer . Controllers
1416{
@@ -17,39 +19,7 @@ public class HomeController : Controller
1719 [ HttpGet ]
1820 public async Task < IActionResult > Index ( )
1921 {
20- var nodeServices = Request . HttpContext . RequestServices . GetRequiredService < INodeServices > ( ) ;
21- var hostEnv = Request . HttpContext . RequestServices . GetRequiredService < IHostingEnvironment > ( ) ;
22-
23- var applicationBasePath = hostEnv . ContentRootPath ;
24- var requestFeature = Request . HttpContext . Features . Get < IHttpRequestFeature > ( ) ;
25- var unencodedPathAndQuery = requestFeature . RawTarget ;
26- var unencodedAbsoluteUrl = $ "{ Request . Scheme } ://{ Request . Host } { unencodedPathAndQuery } ";
27-
28- // ** TransferData concept **
29- // Here we can pass any Custom Data we want !
30-
31- // By default we're passing down Cookies, Headers, Host from the Request object here
32- TransferData transferData = new TransferData ( ) ;
33- transferData . request = AbstractHttpContextRequestInfo ( Request ) ;
34- transferData . thisCameFromDotNET = "Hi Angular it's asp.net :)" ;
35- // Add more customData here, add it to the TransferData class
36-
37- //Prerender now needs CancellationToken
38- System . Threading . CancellationTokenSource cancelSource = new System . Threading . CancellationTokenSource ( ) ;
39- System . Threading . CancellationToken cancelToken = cancelSource . Token ;
40-
41- // Prerender / Serialize application (with Universal)
42- var prerenderResult = await Prerenderer . RenderToString (
43- "/" ,
44- nodeServices ,
45- cancelToken ,
46- new JavaScriptModuleExport ( applicationBasePath + "/ClientApp/dist/main-server" ) ,
47- unencodedAbsoluteUrl ,
48- unencodedPathAndQuery ,
49- transferData , // Our simplified Request object & any other CustommData you want to send!
50- 30000 ,
51- Request . PathBase . ToString ( )
52- ) ;
22+ var prerenderResult = await Prerender . BuildPrerender ( Request ) ;
5323
5424 ViewData [ "SpaHtml" ] = prerenderResult . Html ; // our <app> from Angular
5525 ViewData [ "Title" ] = prerenderResult . Globals [ "title" ] ; // set our <title> from Angular
@@ -87,31 +57,5 @@ public IActionResult Error()
8757 {
8858 return View ( ) ;
8959 }
90-
91- private IRequest AbstractHttpContextRequestInfo ( HttpRequest request )
92- {
93-
94- IRequest requestSimplified = new IRequest ( ) ;
95- requestSimplified . cookies = request . Cookies ;
96- requestSimplified . headers = request . Headers ;
97- requestSimplified . host = request . Host ;
98-
99- return requestSimplified ;
100- }
101- }
102-
103- public class IRequest
104- {
105- public object cookies { get ; set ; }
106- public object headers { get ; set ; }
107- public object host { get ; set ; }
108- }
109-
110- public class TransferData
111- {
112- public dynamic request { get ; set ; }
113-
114- // Your data here ?
115- public object thisCameFromDotNET { get ; set ; }
11660 }
11761}
0 commit comments