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