Rob*_*abe 10 c# asp.net deployment iis asp.net-core
我正在asp.net核心构建一些网站(多个用户界面应用程序和一个web api应用程序).他们都使用web api一起工作.出于我的问题的目的,我们将其称为App1,App2和App3.我在IIS中托管我的网站.
通常,在旧的.net Framework(4.5.1)中,我在IIS中有一个网站,有多个Web应用程序来托管我的多个应用程序.像这样:
WebSite1 - 在端口443上运行
APP1
应用2
APP3
如果网站(WebSite1)在端口443(使用SSL证书)上运行,则意味着可以通过一个域URL访问所有应用程序,如下所示:
在网址末尾使用不同的应用名称来识别它们.
托管新的asp.NET Core应用程序时,我也在IIS中托管,并按照asp.NET Core网站部署的文档,将每个.NET Core Web应用程序托管在IIS中的不同站点中.
由于我的所有网站都有一个域名,例如https://www.example.com(我使用的是SSL证书),我必须为其他网站提供不同的端口.所以我最终得到这样的东西:
WebSite1 - 在端口443上运行
WebSite2 - 在端口444上运行
WebSite3 - 在端口445上运行
然后,可以通过以下域名网址访问所有这些应用:
如何在一个网站下托管asp.NET Core应用程序作为不同的"应用程序",这意味着它们解析为相同的域名URL(https://www.example.com和正斜杠应用程序名称标识我们想要的应用程序) ?或者,如何将我现在配置的端口与端口一起路由并将它们全部路由,以便App1默认为example.com/,App 2是example.com/app2/,App 3是example.com/app3/?
我是否完全以错误的方式看待这个.NET Core部署?
提前感谢任何指针!
Tin*_*wor 10
您可以使用反向代理为同一域上的多个 ASP Net Core 应用程序提供服务。
使用 IIS 我不太确定,但您需要安装 URL Rewrite,然后按照Microsoft 提供的文档进行操作(这也应该会有所帮助)。
您还可以使用location和proxy_pass使用nginx,如下所示:
...
Some nginx Configuration
location /App1 {
proxy_pass http://127.0.0.1:443;
}
location /App2 {
proxy_pass http://127.0.0.1:444;
}
location /App3 {
proxy_pass http://127.0.0.1:445;
}
Other configurations...
Run Code Online (Sandbox Code Playgroud)
然后,每次您想向域中添加另一个 ASP Net 应用程序时,您都需要添加另一个位置,在不同的点上运行该应用程序并重新启动 nginx。
我使用这里的子应用程序建议得到了这个工作:https : //docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view= aspnetcore-2.2#sub-applications 。
这是重要的部分,以防链接失效:
要将 ASP.NET Core 应用作为另一个 ASP.NET Core 应用下的子应用托管:
1.为子应用建立应用池。将 .NET CLR 版本设置为无托管代码,因为 .NET Core 的核心公共语言运行时 (CoreCLR) 被启动以在工作进程中托管应用程序,而不是桌面 CLR (.NET CLR)。
2.在IIS管理器中添加根站点,在根站点下的文件夹中添加子应用程序。
3.右键单击IIS管理器中的子应用程序文件夹并选择转换为应用程序。
4.在“添加应用程序”对话框中,使用“应用程序池”的“选择”按钮分配您为子应用程序创建的应用程序池。选择确定。
作为奖励,我的主要应用程序是旧版 Web 窗体,而我的子应用程序是令人兴奋的新 .NET Core 功能。