【发布时间】:2012-03-27 06:09:29
【问题描述】:
我需要在防火墙中添加一条规则,以便我的自托管 http Web 服务可以接收请求,但是每当我添加一条指定正在执行托管的程序或服务的规则时,客户端请求都会被阻止。
Netstat 显示侦听该端口的 PID 为 4 (SYSTEM)。我不想为对 SYSTEM 的任何调用打开整个端口,我想限制对执行托管的特定程序/服务的调用。谁能提供一些关于我如何实现这一点的见解?
netstat -ano
TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING 4
TCP [::]:1234 [::]:0 LISTENING 4
这是一个准系统示例(实际托管库是 asp.net mvc4 web api,但我发现原始 wcf web api 和常规 wcf 服务也是如此)。我尝试在自己的线程上打开服务主机,但这没有影响。奇怪的是,当我将 PID 写入控制台时,它是 programs PID,但 netstat 仍然报告它正在侦听 PID 4。
class Host
{
private static HelloWorldService service;
static void Main()
{
Thread HostingThread = new Thread(OpenHostingThread);
HostingThread.Start();
Console.WriteLine("Server Running...");
Console.ReadLine();
}
static void OpenHostingThread()
{
service = new HelloWorldService();
HttpServiceHost host = new HttpServiceHost(service, "http://localhost:1234");
host.Open();
Console.WriteLine(Process.GetCurrentProcess().Id);
}
}
【问题讨论】:
标签: c# asp.net wcf http asp.net-web-api