【问题标题】:Unable to start process dotnet.exe with multiple projects which are sharing same port无法使用共享同一端口的多个项目启动进程 dotnet.exe
【发布时间】:2018-05-22 04:14:34
【问题描述】:

我正在将平台从 MVC 5 转移到核心 2.0, 项目需要多个具有自定义域的初创公司。

我的启动项目的 Url 是:

  1. https://agent.webz.local:44343/
  2. https://superAgent.webz.local:44343/
  3. https://client.webz.local:44343/
  4. https://general.webz.local:44343/
  5. https://agentAPI.webz.local:44343/

如果我单独运行项目,则没有错误,但是,当我在多个启动模式下启动项目时,只有第一个在工作,其他项目返回以下错误。

无法启动进程 C:\Program Files\dotnet\dotnet.exe。网络 服务器请求失败,状态码为 500。无法启动进程 C:\Program Files\dotnet\dotnet.exe。 Web 服务器请求失败 状态码 503,服务不可用。

*相同的域在 MVC-5 上运行良好。

如果我确实将端口 44343 更改为 4434X,那么问题就不会出现。

有没有办法用同一个端口启动多个项目。

【问题讨论】:

  • 没有。一次只能有一个应用程序绑定到一个端口,如果强制绑定,行为是不确定的。使用多播套接字,只要在每个套接字的选项中设置了SO_REUSEADDR,就可以将多个应用程序绑定到一个端口。您可以通过编写一个“主”进程来完成此操作,该进程接受并处理所有连接,然后将它们交给需要在同一端口上侦听的两个应用程序。这是 Web 服务器等采用的方法,因为许多进程需要监听 80。
  • 您的评论是关于 .net-core 的吗?因为现在我有多个具有公共端口的启动项目在 MVC-5 上运行良好,没有任何问题。 ***我的知识水平不足以轻松理解这些东西。
  • 使用 MVC5,您实际上在该端口上启动了一个 IIS Express。 .net Core 上没有 IIS。
  • 哦,是的,我刚开始阅读有关 kestral 的文章!

标签: c# .net-core startup


【解决方案1】:

使用 MVC5,您可以在 44343 端口上启动单个 IIS Express 实例,该实例处理传入请求并将它们重定向到适当的 .net 应用程序。在 .net Core 上,您的每个项目实际上都是一个 Web 服务器(名为 Kestrel),因此您需要将它们绑定到不同的端口上。但实际上你可以做你想做的事:反向代理来救援! Reverse proxy 和 NGinx(例如)潜伏更多。

【讨论】:

    猜你喜欢
    • 2012-07-21
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2013-04-01
    • 1970-01-01
    相关资源
    最近更新 更多