Skip to content

Commit 98d38e0

Browse files
committed
update
1 parent 01aeccc commit 98d38e0

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

ViewRouter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public ViewRouter(string viewNamespace)
1616

1717
private string Invoke(WebContext<TSession> context, Type routedClass)
1818
{
19-
Type genericClass = routedClass.MakeGenericType(typeof(TSession));
20-
View<TSession> view = Activator.CreateInstance(genericClass) as View<TSession>;
19+
Console.WriteLine(routedClass.FullName);
20+
View<TSession> view = Activator.CreateInstance(routedClass) as View<TSession>;
2121
if (view == null)
2222
{
2323
Console.WriteLine("ViewRouter: object {0} could not be created.", routedClass.FullName);
@@ -39,7 +39,7 @@ private string Match(WebContext<TSession> context, string prefix, string classNa
3939

4040
Console.WriteLine("ViewRouter: try {0}.Render()", className);
4141

42-
routedClass = assembly.GetType(prefix + '.' + className + "`1");
42+
routedClass = assembly.GetType(prefix + '.' + className);
4343
if (routedClass == null)
4444
{
4545
Console.WriteLine("ViewRouter: class {0} does not exist.", prefix + '.' + className);

WebContext.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,18 @@ public void WriteSession()
123123
}
124124
}
125125

126+
public void FinalizeSession()
127+
{
128+
var bytes = JsonSerializer.SerializeToUtf8Bytes<TSession>(Session);
129+
130+
var newSessionHashCode = ComputeHash(bytes);
131+
132+
if (newSessionHashCode != this.sessionHashCode)
133+
{
134+
throw new Exception("A '" + Method + "' on '" + Controller + "." + Action + "' shouldn't write to the session in the View '" + View + "'");
135+
}
136+
}
137+
126138
FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share)
127139
{
128140
for (int numTries = 0; numTries < 3000; numTries++)

WebServer.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public void Run()
8888
webctx.WriteSession();
8989
if (!actionResult) webctx.View = "Error.NotFound";
9090
viewResult = new ViewRouter<TSession>(this.viewNamespace).Route(webctx);
91+
webctx.FinalizeSession();
9192
if (viewResult == null) webctx.SendString("NotFound", 404);
9293
else webctx.SendString(viewResult);
9394
}

0 commit comments

Comments
 (0)