设置 IIS 10 并将 .net core 2.1 Web 应用程序发布到 IIS
Setting up IIS 10 and publishing a .net core 2.1 web application to IIS
我对 .net 核心框架还很陌生,我在设置 IIS 10 方面经验不足,在设置和 运行 时遇到了麻烦。在服务器端,我是 运行 Windows Server 2016。我安装了带管理服务的 IIS 10(见下图)和 .net Framework 4.6 功能(见下图)。
安装后,我从 Web Deploy 3.6 下载并安装了 Web Deploy 包(之前我安装了 Web Platform Installer,然后从那里安装 Web Deploy)。
重新启动系统后,我确保服务 运行 正确(见下图)。
一切似乎都是正确的,所以下一步是创建一个 IIS 网站我决定将该网站嵌套在 默认网站 下,如下所示:
该站点指向默认应用程序池,因为我没有创建新应用程序池。我将应用程序池修改为以下设置:
我也将其身份更改为 NetworkService 之前我尝试将其设置为 LocalSystem(见下图)。
我还确保用户 IUSR 和 IIS_IUSRS 对网站目录和子目录具有读取、执行和写入权限(见下图)。
完成后,我安装从 .Net Core Hosting Bundle 下载的 .net 核心托管包。
最后 Visual Studio 我的项目是 .net core 2.1 razor page 项目。发布我的项目时,我创建了一个配置文件以使用以下设置发布它:
我的连接验证正常,所以我点击 下一步 并使用以下设置设置下一步:
我保存配置文件然后发布它,它运行良好。如果我检查服务器,文件已全部发布并且似乎是正确的。但是,如果我尝试导航到 http://myserver/BlankLabel/ I get a 404 error (see image below). Now if I try navigating to the Default Web Site (http://myserver) 页面,则加载正常。
如果我对此有任何帮助,我将不胜感激,因为我没有设置它的经验,而且肯定会遗漏一些东西...
参考文献
Host ASP.NET Core on Windows with IIS
Publishing and deploying a Razor Pages application to IIS on Windows
Deploying .NET Core apps with Visual Studio
更新#1
我试图在默认网站下创建一个新站点,然后添加一个普通 index.htm 页面以查看它是否会加载。一旦我看到它正在工作,我就将我的应用程序发布到这个新站点(创建了一个临时的第二个配置文件来执行此操作)并尝试重新加载页面。这样做的结果是它导致了相同的原始错误(我的 index.htm 文件仍然与发布的文件一起保留在文件夹中)。然后我删除了已发布的文件并重新加载,它再次与 index.htm 文件一起工作......显然.net core 2.1 项目发生了一些事情并且 IIS 不喜欢它......
更新#2
我只是想补充一点,AspNetCoreModule 已加载并且它也被设置为启动(见下图)。所以我想这只是我之前更新的几秒钟...
更新#3
只需按要求添加 web.config 文件(我还注意到日志已关闭,我会将它们设置为 true 并查看它是否给我任何额外信息):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\BlankLabel.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
我建议检查您发布的 ASP.NET 核心 web.config 文件并通过设置 stdoutLogEnabled=true
启用日志记录。
我对 .net 核心框架还很陌生,我在设置 IIS 10 方面经验不足,在设置和 运行 时遇到了麻烦。在服务器端,我是 运行 Windows Server 2016。我安装了带管理服务的 IIS 10(见下图)和 .net Framework 4.6 功能(见下图)。
安装后,我从 Web Deploy 3.6 下载并安装了 Web Deploy 包(之前我安装了 Web Platform Installer,然后从那里安装 Web Deploy)。
重新启动系统后,我确保服务 运行 正确(见下图)。
一切似乎都是正确的,所以下一步是创建一个 IIS 网站我决定将该网站嵌套在 默认网站 下,如下所示:
该站点指向默认应用程序池,因为我没有创建新应用程序池。我将应用程序池修改为以下设置:
我也将其身份更改为 NetworkService 之前我尝试将其设置为 LocalSystem(见下图)。
我还确保用户 IUSR 和 IIS_IUSRS 对网站目录和子目录具有读取、执行和写入权限(见下图)。
完成后,我安装从 .Net Core Hosting Bundle 下载的 .net 核心托管包。
最后 Visual Studio 我的项目是 .net core 2.1 razor page 项目。发布我的项目时,我创建了一个配置文件以使用以下设置发布它:
我的连接验证正常,所以我点击 下一步 并使用以下设置设置下一步:
我保存配置文件然后发布它,它运行良好。如果我检查服务器,文件已全部发布并且似乎是正确的。但是,如果我尝试导航到 http://myserver/BlankLabel/ I get a 404 error (see image below). Now if I try navigating to the Default Web Site (http://myserver) 页面,则加载正常。
如果我对此有任何帮助,我将不胜感激,因为我没有设置它的经验,而且肯定会遗漏一些东西...
参考文献
Host ASP.NET Core on Windows with IIS
Publishing and deploying a Razor Pages application to IIS on Windows
Deploying .NET Core apps with Visual Studio
更新#1
我试图在默认网站下创建一个新站点,然后添加一个普通 index.htm 页面以查看它是否会加载。一旦我看到它正在工作,我就将我的应用程序发布到这个新站点(创建了一个临时的第二个配置文件来执行此操作)并尝试重新加载页面。这样做的结果是它导致了相同的原始错误(我的 index.htm 文件仍然与发布的文件一起保留在文件夹中)。然后我删除了已发布的文件并重新加载,它再次与 index.htm 文件一起工作......显然.net core 2.1 项目发生了一些事情并且 IIS 不喜欢它......
更新#2
我只是想补充一点,AspNetCoreModule 已加载并且它也被设置为启动(见下图)。所以我想这只是我之前更新的几秒钟...
更新#3
只需按要求添加 web.config 文件(我还注意到日志已关闭,我会将它们设置为 true 并查看它是否给我任何额外信息):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\BlankLabel.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
我建议检查您发布的 ASP.NET 核心 web.config 文件并通过设置 stdoutLogEnabled=true
启用日志记录。