dotnet核心网站绑定到IIS Kestrel中的同一端口

时间:2017-10-26 21:45:04

标签: c# asp.net .net asp.net-core .net-core

我有一个包含多个项目的应用程序,所有这些都可以。现在我需要多次上传到我们服务器上的不同文件夹。每个文件夹都设置为一个网站,每个网站都有自己的子应用程序(网站是WEBSITE应用程序,子应用程序是API应用程序)

我似乎遇到问题,应用程序将启动然后立即关闭。将日志文件保存到文本文件后,有时网站会在已在服务器上使用的PORT上启动。

有没有办法确保2个应用程序不绑定到同一个PORT?我知道你可以对.UseUrls使用WebHostBuilder方法,但我真的不想记录每个网站绑定的每个PORT的内容,而是宁愿dotnet自动完成这个。

提前致谢。

更新1

所以问了几个问题,关于我可能没有解释好的事情,对此我很抱歉,希望这里有一些有用的细节。

在IIS中,我的绑定只是为每个站点端口80,就像这样。

enter image description here

至于托管我正在使用IIS,我在我的两个应用程序上都使用dotnet publish命令,其中包含我的站点所需的所有dll和exe文件。我已将其上传到我的网站文件夹中,如下所示

enter image description here

enter image description here

正如你在这里看到的,我的应用程序有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.

0 个答案:

没有答案