C# 带有性能计数器的Microsoft Owin自主机在退出时挂起
我在windows上安装了Owin自托管web api应用程序(没有任何控制器),其中包含性能计数器,当我尝试停止它(停止所有内部服务、线程、dispose web主机等)时,它会挂起约10秒,然后关闭。我的应用程序中没有剩余线程。它只需等待约10秒,然后退出。 如果删除性能计数器逻辑或web主机创建,则应用程序将正常关闭 使用的Nuget软件包:C# 带有性能计数器的Microsoft Owin自主机在退出时挂起,c#,.net,asp.net-web-api,owin,performancecounter,C#,.net,Asp.net Web Api,Owin,Performancecounter,我在windows上安装了Owin自托管web api应用程序(没有任何控制器),其中包含性能计数器,当我尝试停止它(停止所有内部服务、线程、dispose web主机等)时,它会挂起约10秒,然后关闭。我的应用程序中没有剩余线程。它只需等待约10秒,然后退出。 如果删除性能计数器逻辑或web主机创建,则应用程序将正常关闭 使用的Nuget软件包: Microsoft.Owin.3.0.1 Microsoft.Owin.Host.HttpListener.3.0.1 Microsoft.Owin
Microsoft.Owin.3.0.1
Microsoft.Owin.Host.HttpListener.3.0.1
Microsoft.Owin.Hosting.3.0.1
Newtonsoft.Json.6.0.8
Owin.1.0
System.Net.Http
System.Net.Http.Formatting (Microsoft.AspNet.WebApi.Client.5.2.3)
System.Web.Http (Microsoft.AspNet.WebApi.Core.5.2.3)
System.Web.Http.Owin (Microsoft.AspNet.WebApi.Owin.5.2.3)
使用的.Net框架:v4.5
Program.cs
public class Program
{
private static PerformanceCounter Counter;
public static void Main(string[] args)
{
using (var webHost = WebApp.Start<Startup>("http://127.0.0.1:5000/"))
{
var process = Process.GetCurrentProcess();
Counter = new PerformanceCounter("Process", "Thread Count", process.ProcessName, true);
Console.WriteLine(Counter.NextValue());
Console.ReadLine();
Console.WriteLine("Exit1");
}
Console.WriteLine("Exit2"); // hangs after this
}
}
有什么想法吗?
提前感谢。您能在github上分享一个示例吗?我来试试。试试这个。试试这个。没有遇到任何问题(尝试了调试/发布模式,无论是否连接了调试器)。也许是你的电脑?我的同事也有同样的问题。我在家里检查了这个,结果是一样的。尝试了VS2012和VS2015社区版。还尝试了framework v4.6-结果相同。此问题仅在Windows 7上出现。我们在Win8和Win10上进行了检查-效果良好。您有机会在win7上查看它吗?您可以在github上共享一个示例吗?我来试试。试试这个。试试这个。没有遇到任何问题(尝试了调试/发布模式,无论是否连接了调试器)。也许是你的电脑?我的同事也有同样的问题。我在家里检查了这个,结果是一样的。尝试了VS2012和VS2015社区版。还尝试了framework v4.6-结果相同。此问题仅在Windows 7上出现。我们在Win8和Win10上进行了检查-效果良好。您有机会在win7上检查它吗?
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
var config = new HttpConfiguration();
// Web API routes
config.MapHttpAttributeRoutes();
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.LocalOnly;
}
}