通过 Octopus 部署到 IIS 的 Net Core 2.1 App 在 IIS 中不可用,但可以从命令行启动

通过 Octopus 部署到 IIS 的 Net Core 2.1 App 在 IIS 中不可用,但可以从命令行启动

[更新]我在日志中发现了以下明显相关的条目HTTPERR

2018-07-25 14:39:06 ::1%0 49618 ::1%0 701 HTTP/1.1 GET / 400 - Hostname -

2018-07-25 14:39:06 ::1%0 49617 ::1%0 701 HTTP/1.1 GET /favicon.ico 400 - Hostname -

[原来的]

我第一次尝试将.NET Core 2.1应用程序部署到 IIS 服务器(我是开发人员,而不是系统管理员)。.NET Core 支持由系统管理员安装,并且由于我可以从命令行启动命令(见下文),所以我相信这是正确的。

我们还没有此应用程序的证书,因此我尝试使用纯 HTTP 访问进行部署(到目前为止,应用程序中的所有页面都是虚拟数据,我们将对 IIS 服务器的访问列入白名单)。我已经对应用程序启动代码进行了必要的更改以避免 HTTPS 重定向,我相信我做得是正确的(见下文)。

此外,此应用程序绑定到端口 701(因为 80 已被使用)。完整绑定使用http、主机名myapplication.mycompany.com、端口701和 IP 地址*

应用程序已正确部署,并且似乎可以通过 IIS 管理器“启动”和“停止”。但是,当我浏览到该应用程序时,浏览器窗口在几秒钟后超时并显示一条ERR_CONNECTION_TIMED_OUT消息。

当我直接使用该应用程序启动时,dotnet .\myapplication.dll它会报告正在监听 5000,并且我可以从同一台机器上运行的浏览器访问它。

此外,我注意到此应用程序在 IIS 中被分配了 ID 4,但查看文件\inetpub\logs\LogFiles夹时我只看到 W3SVC1、W3SVC2 和 W3SVC3 文件夹,而没有 ID 4 的日志文件夹。

最后,我确保(我认为)该应用程序的 AppPool 在该应用程序的部署文件夹中具有执行和写入权限。

有人能建议我在让 IIS 运行我的普通 http 服务时可能错过了什么步骤吗?或者,如果失败了,我如何在没有日志的情况下调试问题?

答案1

在您的应用程序池中将.NET Framework 版本更改为“无托管代码”。

答案2

回答我自己的问题:

维护我们私有云服务器的外部提供商已正确添加了子域的 DNS 记录myapplication,但忘记添加防火墙规则以允许流量通过端口 701 进入私有云。添加此规则显然已解决问题。

相关内容