我有一个包含多个项目的应用程序,所有这些都可以。现在我需要多次上传到我们服务器上的不同文件夹。每个文件夹都设置为一个网站,每个网站都有自己的子应用程序(网站是WEBSITE应用程序,子应用程序是API应用程序)
我似乎遇到问题,应用程序将启动然后立即关闭。将日志文件保存到文本文件后,有时网站会在已在服务器上使用的PORT上启动。
有没有办法确保2个应用程序不绑定到同一个PORT?我知道你可以对.UseUrls
使用WebHostBuilder
方法,但我真的不想记录每个网站绑定的每个PORT的内容,而是宁愿dotnet自动完成这个。
提前致谢。
更新1
所以问了几个问题,关于我可能没有解释好的事情,对此我很抱歉,希望这里有一些有用的细节。
在IIS中,我的绑定只是为每个站点端口80,就像这样。
至于托管我正在使用IIS,我在我的两个应用程序上都使用dotnet publish
命令,其中包含我的站点所需的所有dll和exe文件。我已将其上传到我的网站文件夹中,如下所示
正如你在这里看到的,我的应用程序有2个日志文件,它们都在IIS的不同网站下,但你可以看到红隼在同一个端口上启动它们。
申请1
Hosting environment: Development
Content root path: C:\inetpub\webroot\myapp1\api
Now listening on: http://localhost:33587
Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 POST http://www.mydomain1.co.uk/api/connect/token application/x-www-form-urlencoded 848
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 20.0675ms 400 application/json;charset=UTF-8
Application is shutting down...
info: Hangfire.BackgroundJobServer[0]
Hangfire Server stopped.
申请2
Hosting environment: Development
Content root path: C:\inetpub\webroot\myapp2\api
Now listening on: http://localhost:33587
Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 POST http://www.mydomain2.co.uk/api/connect/token application/x-www-form-urlencoded 848
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 20.0675ms 400 application/json;charset=UTF-8
Application is shutting down...
info: Hangfire.BackgroundJobServer[0]
Hangfire Server stopped.
我在10个不同的IIS网站下使用不同的域名大约有10个此应用程序的副本,如果可能的话,我必须很简单。
更多信息,在我的Program.cs
我正在使用此代码
var webhostBuilder = new WebHostBuilder()
.ConfigureLogging(options => options.AddConsole())
.ConfigureLogging(options => options.AddDebug())
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel(options => options.AddServerHeader = false)
.UseIISIntegration()
.UseStartup<Startup>();
更新2
要尝试强制每个网站使用特定代码,我在UsePort
文件中添加了appsettings.json
参数,其中我有其他设置,在我的Program.cs
文件中我有添加了此代码。它根本没有绑定到端口!我做错了吗?
// hosting
var webhostBuilder = new WebHostBuilder()
.ConfigureLogging(options => options.AddConsole())
.ConfigureLogging(options => options.AddDebug())
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel(options => options.AddServerHeader = false)
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://localhost:" + appSettings.UsePort);
正如您在日志中看到的那样,它仍在使用随机端口,因为我将其设置为2018
Hosting environment: Production
Content root path: C:\inetpub\webroot\my-app1
Now listening on: http://localhost:6380
Application started. Press Ctrl+C to shut down.