我使用Microsoft.Owin.Hosting托管以下非常简单的web应用程序。
下面是启动它的号召:
WebApp.Start<PushServerStartup>("http://localhost:8080/events");下面是我使用的启动类:
public class PushServerStartup
{
public void Configuration(IAppBuilder app)
{
app.MapHubs();
}
}我在一个控制台应用程序中运行这个程序,这个应用程序做了很多其他事情,包括路由跟踪到某些文件等等。但是突然之间(当激活OWIN主机时),我看到写到控制台的跟踪消息通常是被路由到其他地方的。
显然,OWIN宿主框架中存在一些活动的跟踪侦听器。我怎么才能把它们关掉?
发布于 2013-07-31 10:57:26
我自己找到了解决办法。在研究了Katana源代码之后,您似乎需要注册自己的ITraceOutputFactory实例来取消默认的跟踪侦听器(它正在写入控制台)。
以下是新的开始呼叫:
var dummyFactory = new DummyFactory();
var provider = ServicesFactory.Create(
defaultServiceProvider => defaultServiceProvider.AddInstance<ITraceOutputFactory>(dummyFactory));
using (WebApp.Start<Startup>(provider, new StartOptions("http://localhost:8090")))
{
Console.ReadLine();
}下面是一个虚拟的跟踪工厂(也许不是最好的解决方案,但您可以用一些更好的方法来代替它):
public class DummyFactory : ITraceOutputFactory
{
public TextWriter Create(string outputFile)
{
return TextWriter.Null;
}
}发布于 2014-03-07 15:39:31
我也有同样的问题,我在一个进程中自己托管了4个实例,每个请求都得到了4条跟踪到控制台的消息。
我只是删除了TraceListener实例
Trace.Listeners.Remove("HostingTraceListener")"HostingTraceListener“是在owin源代码中定义的,因此我猜可能会更改- http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Hosting/Engine/HostingEngine.cs。
我做这件事之后
WebApp.Start(...发布于 2014-03-11 13:25:52
用最新的Katana自主机(2.1.0)代替meilke的答案:
StartOptions options = new StartOptions("http://localhost:8080/events");
// disable built-in owin tracing by using a null traceoutput
options.Settings.Add(
typeof(Microsoft.Owin.Hosting.Tracing.ITraceOutputFactory).FullName,
typeof(NullTraceOutputFactory).AssemblyQualifiedName);
using (WebApp.Start<PushServerStartup>(options))NullTraceOutputFactory类似于DummyFactory,但使用StreamWriter.Null而不是StringWriter:
public class NullTraceOutputFactory : ITraceOutputFactory
{
public TextWriter Create(string outputFile)
{
return StreamWriter.Null;
}
}https://stackoverflow.com/questions/17948363
复制相似问题