我在同一台机器上运行两个Windows服务。两种服务都使用
private HttpListener listener;
我将baseURL分别指定为每个服务的“http://IPAddress:8080/”和“http://IPAddress:8081/”。然后我做了需要和打电话
listener.Start();
第一个服务在8080端口成功启动。但是,当我现在启动第二个服务时,我得到HTTPListenerException“进程无法访问该文件,因为它正由另一个进程使用”用于侦听器对象。
有人可以告诉我:1)如果可以在两个不同端口的同一个IIS上启动两个HTTP侦听器。 2)如果是,我们怎么能这样做呢? 3)还有其他方法吗?
供您参考:我使用的是C#.NET 2.0和IIS 6.0服务器。
感谢和问候,
天
HttpListener不能独立于IIS工作吗?你能停止IIS服务,看看会发生什么?
或者也许端口8081被另一个程序或进程使用。我建议尝试将端口设置为另一个数字。您可以打开命令行并执行“netstat”命令,以查看在启动服务之前是否使用了该端口。
(来源:googlepages.com)
感谢您的立即回复:-)
端口号是问题所在。我使用的端口号如8080,8081,8082等。可能这些端口已经被使用了。
我尝试使用端口http://localhost:8080和http://localhost/35124并且它有效。
再次感谢您的回复。
感谢和问候,
天
在使用端口号时快速查看this页面通常是一个好主意...只是为了确保您尝试使用的临时号码尚未使用。
HTTPListener确实不是IIS的一部分。它只是C#代码。
你这样做了吗?
String[] prefixes = { "http://localhost:8280/", "http://localhost:8281/"};
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8280/");
listener.Start();
1)如果可以在两个不同端口的同一IIS上启动两个HTTP侦听器。
是的。但IIS上的监听器不是通过代码创建的,而是通过IIS管理工具制作的,所以这可能不是你想要做的。 IIS与您尝试的c#代码分开。
2)如果是,我们怎样才能做到这一点?
3)还有其他方法吗?
如果您正在尝试提供网页,您可能不想制作Web应用程序而不是制作自己的HTTP服务器
如果你正在做一些自定义的事情,你可能想看一下WCF(Windows Communication Foundation),因为它是用于Web,套接字,Web服务等的新框架,这也是MS将来会使用的东西。