设置IIS 10并将.net core 2.1 Web应用程序发布到IIS

时间:2018-11-15 16:06:56

标签: iis publishing iis-10 .net-core-2.1

.net核心框架对我来说还算是新手,并且我对设置IIS 10的经验不是很丰富,并且很难启动和运行它。在服务器端,我正在运行Windows Server2016。已经安装了带有Management Services的IIS 10(请参见下图)和.net Framework 4.6功能(请参见下图)。

Management Services

.net framework 4.6 features

安装此软件后,我已经从Web Deploy 3.6下载并安装了Web Deploy软件包(以前我是在安装Web Platform Installer,然后从那里安装Web Deploy)。

重新启动系统后,我已确保服务正常运行(请参见下图)。

Services

一切似乎都是正确的,因此下一步是创建一个IIS网站,我决定将该网站嵌套在默认网站下,如下所示:

IIS Site

该站点指向默认的应用程序池,因为我没有创建一个新的应用程序池。我将应用程序池修改为以下设置:

Application Pool

在尝试将其标识设置为 LocalSystem 之前,我还将其标识更改为 NetworkService 。(见下图)。

App Pool Identity

我还确保用户IUSR和IIS_IUSRS对网站目录和子目录具有读取,执行和写入权限(请参见下图)。

IUSR

IIS_IUSRS

完成所有操作后,我将安装从.Net Core Hosting Bundle下载的.net核心托管包。

最后在Visual Studio中,我的项目是一个.net core 2.1剃须刀页面项目。发布项目时,我创建了一个配置文件以使用以下设置进行发布:

Publish 01

我的连接验证正常,因此我点击了下一步并使用以下设置设置了下一步:

Publish 02

我保存了配置文件,然后发布它,它运行良好。如果我检查服务器,文件已全部发布,似乎是正确的。但是,如果我尝试导航到页面 http://myserver/BlankLabel/ ,则会收到404错误(请参见下图)。现在,如果我尝试导航到加载正常的默认网站(http://myserver

Error

对此我将不胜感激,因为我没有设置经验,并且肯定会丢失一些东西...

参考

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已加载,并且也将其设置为启动(请参见下图)。所以我想这只是我以前的更新几秒钟...

AspNetCoreModule

Handler Mapping

更新#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>

1 个答案:

答案 0 :(得分:1)

我建议检查您发布的ASP.NET Core web.config文件并通过设置stdoutLogEnabled=true启用日志记录。