由于当前的ASP .NET Core版本(v3.0)对TCP积压进行了硬编码,因此我可以利用Easyhook解决此问题。class WinsocksHook
{
///
/// /en-us/windows/win32/api/winsock2/nf-winsock2-listen
///
///
///
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.I4)]
delegate int ListenDelegate(IntPtr socket, [MarshalAs(UnmanagedType.I4)] int backlog);
[DllImport("kernel32.dll", EntryPoint = "LoadLibraryA", CharSet = CharSet.Ansi)]
static extern IntPtr LoadLibrary(string dllToLoad);
[DllImport("Ws2_32.dll", EntryPoint = "listen")]
static extern int Listen(IntPtr socket, uint uType);
static int SocketListen(IntPtr socket, int backlog)
{
return Listen(socket, 2048);
}
private static LocalHook _hook;
public static void Install()
{
LoadLibrary("Ws2_32.dll");
_hook = LocalHook.Create( LocalHook.GetProcAddress("Ws2_32.dll", "listen"), new ListenDelegate(SocketListen), null);
_hook.ThreadACL.SetExclusiveACL(new int[] { });
}
}
微软kestrel服务器开启 -core - 如何在 Kestrel服务器中设置TCP待办事项 - SO中文参考 - ...