使用C#.NET 2.0在IIS上启动多个HTTP侦听器

问题描述 投票:6回答:4

我在同一台机器上运行两个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服务器。

感谢和问候,

exception iis-6 listeners httplistener
4个回答
4
投票

HttpListener不能独立于IIS工作吗?你能停止IIS服务,看看会发生什么?

或者也许端口8081被另一个程序或进程使用。我建议尝试将端口设置为另一个数字。您可以打开命令行并执行“netstat”命令,以查看在启动服务之前是否使用了该端口。

alt text (来源:googlepages.com


2
投票

感谢您的立即回复:-)

端口号是问题所在。我使用的端口号如8080,8081,8082等。可能这些端口已经被使用了。

我尝试使用端口http://localhost:8080http://localhost/35124并且它有效。

再次感谢您的回复。

感谢和问候,


1
投票

在使用端口号时快速查看this页面通常是一个好主意...只是为了确保您尝试使用的临时号码尚未使用。


1
投票

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)如果是,我们怎样才能做到这一点?

  • 尝试其他一些端口号(如58080和58081)并尝试将“IPAddress”替换为“localhost”。很可能您的端口号被其他一些Web服务器使用

3)还有其他方法吗?

如果您正在尝试提供网页,您可能不想制作Web应用程序而不是制作自己的HTTP服务器

如果你正在做一些自定义的事情,你可能想看一下WCF(Windows Communication Foundation),因为它是用于Web,套接字,Web服务等的新框架,这也是MS将来会使用的东西。

© www.soinside.com 2019 - 2024. All rights reserved.