7

我有两个 Windows 服务在同一台机器上运行。这两项服务都使用

私有 HttpListener 监听器;

我将每个服务的 baseURL 分别指定为“ http://IPAddress:8080/ ”和“ http://IPAddress:8081/ ”。然后我做必要的事情并打电话

listener.Start();

第一个服务在 8080 端口成功启动。但是,当我现在启动第二个服务时,我收到 HTTPListenerException “进程无法访问文件,因为它正在被另一个进程使用”作为侦听器对象。

谁能告诉我: 1) 如果可以在同一个 IIS 上的两个不同端口上启动两个 HTTP 侦听器。2)如果是,我们怎样才能做到这一点?3)有没有其他方法可以做到这一点?

供您参考:我正在使用 C#.NET 2.0 和 IIS 6.0 服务器。

感谢和问候,

哈里

4

3 回答 3

6

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

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

替代文字
(来源:googlepages.com

于 2008-10-18T07:55:45.337 回答
2

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 通信基础),因为它是 Web、套接字、Web 服务等的新框架,并且是 MS 未来将使用的

于 2008-10-18T08:28:48.233 回答
1

使用端口号时,快速浏览此页面通常是个好主意……只是为了确保您尝试使用的临时号尚未在使用中。

于 2009-06-15T23:18:32.813 回答