c# - 在同一主机和端口下运行多个应用程序

标签 c# visual-studio iis asp.net-core iis-express

我正在一个解决方案中开发多个 asp.net 核心应用程序,当我使用 IIS Express 在 Visual Studio 中运行该解决方案时,希望它们位于相同的 url 和端口下。例如:

  • 应用1:https://localhost:44369
  • 应用2:https://localhost:44369/App2
  • 应用3:https://localhost:44369/App3

  • 我试图将 lauchSettings.json 文件更改为使用相同的主机和 URL,但随后出现服务器无法运行的错误。

    有没有办法配置它?
    {
      "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
          "applicationUrl": "http://localhost:44369/App2",
          "sslPort": 44369
        }
      },
      "$schema": "http://json.schemastore.org/launchsettings.json",
      "profiles": {
        "IIS Express": {
          "commandName": "IISExpress",
          "launchBrowser": true,
          "launchUrl": "api",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          }
        },
        "App2": {
          "commandName": "Project",
          "launchBrowser": true,
          "launchUrl": "api",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          },
          "applicationUrl": "https://localhost:5001;http://localhost:5000"
        }
      }
    }
    

    最佳答案

    这是不可能的,并且是一个完美的例子,说明为什么任何 Web 开发人员都应该熟悉他们打算开发的实际平台,即: HTTP 和 TCP/IP 协议(protocol),坦率地说,套接字通常是如何工作的,在这个案例。

    计算机之间的通信通过各种协议(protocol)通过端口进行。这种通信是通过数据包进行的,类似于通过邮件发送的信件。就像一封信一样,数据包被寻址,这允许接收计算机将其路由到正确的目的地。当它到达最终目标计算机时,该计算机还必须将其路由到它所指向的应用程序或设备。这部分类似于发送给企业的邮件。所有邮件都被传送到组织的某个中心部分,然后在那里被路由到它指定的特定员工。

    对于 Web 应用程序之类的东西,上述场景中的“员工”由 URL 和/或端口标识。从技术上讲,它始终是 URL 和端口,但两者都可以是“默认值”。所以只是一个端口假设 0.0.0.0或分配给机器的所有 IP 地址的集合,只有一个 URL 假定默认协议(protocol)端口(HTTP 为 80,HTTPS 为 443)。无论如何,该组合必须有一个唯一的接收者。再次回到办公室的类比,想象一下两个员工,共享和办公室以及一封邮件只发送到办公室的房间号。你怎么知道它实际上是为两个员工中的哪一个准备的?你不能。实际上,这更像是两个名字和姓氏相同的员工共用一个办公室。即使您有员工的姓名,您仍然不知道该将其交付给谁。

    简而言之,你想要的东西是不可能的,如果你真正了解你正在开发的平台,这显然是不可能的,坦率地说,这是任何类型开发的先决条件。每个应用程序都必须使用唯一的 URL、唯一的端口或两者都使用。没有其他选择。

    关于c# - 在同一主机和端口下运行多个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396337/

    相关文章:

    c# - 当从一个类继承以后会伤害到你?

    c# - 可选的日期时间 Web API

    c# - 具有异步服务初始化的竞争条件

    C# 在 json 解码后访问对象属性

    c# - 使用 F5 时,终于似乎没有在 C# 控制台应用程序中执行

    visual-studio - Visual Studio 2017-无法初始化Powershell主机

    c++ - Visual C++ 2015 表达 : _stat not working on Windows XP

    asp.net - 共享2个应用程序: Session State Deserialization Error for ASP.Net MVC

    iis - ERROR 405 Method Not Allowed 但在开发模式下有效

    c# - 偶发性 WCF 服务激活错误并显示消息 - 访问 IIS 元数据库时出错