private static IJsonRpcServiceHost BuildServiceHost(ISession session, TextWriter logWriter, IJsonRpcContractResolver contractResolver, bool debugMode) { var loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(new DebugLoggerProvider(null)); var builder = new ServiceHostBuilder { ContractResolver = contractResolver, Session = session, Options = JsonRpcServiceHostOptions.ConsistentResponseSequence, LoggerFactory = loggerFactory }; builder.UseCancellationHandling(); builder.Register(typeof(Program).GetTypeInfo().Assembly); if (debugMode) { // Log all the client-to-server calls. builder.Intercept(async(context, next) => { lock (logWriter) logWriter.WriteLine("> {0}", context.Request); await next(); lock (logWriter) logWriter.WriteLine("< {0}", context.Response); }); } return(builder.Build()); }