Asp.net core 部署错误:";无法访问请求的页面,因为该页面的相关配置数据无效";

Asp.net core 部署错误:";无法访问请求的页面,因为该页面的相关配置数据无效";,asp.net-core,deployment,asp.net-core-webapi,Asp.net Core,Deployment,Asp.net Core Webapi,发生了什么事? 我在windows服务器上发布了一个网站 当我这样做时,我会不断收到错误消息: “HTTP错误500.19-内部服务器错误 无法访问请求的页面,因为该页面的相关配置数据无效。“ 我设置/尝试了什么? 我所做的是创建了一个.NET Core 2.1 Web API,它使用IIS在本地计算机上运行良好。然后,我将web api发布到了托管站点UnoEuro,在那里我可以看到文件按应有的方式上传 我请求托管站点支持,他们告诉我,只需确保它是独立部署的,否则他们就无法进一步提供帮助。看起

发生了什么事?

我在windows服务器上发布了一个网站

当我这样做时,我会不断收到错误消息:

“HTTP错误500.19-内部服务器错误

无法访问请求的页面,因为该页面的相关配置数据无效。“

我设置/尝试了什么?

我所做的是创建了一个.NET Core 2.1 Web API,它使用IIS在本地计算机上运行良好。然后,我将web api发布到了托管站点UnoEuro,在那里我可以看到文件按应有的方式上传

我请求托管站点支持,他们告诉我,只需确保它是独立部署的,否则他们就无法进一步提供帮助。看起来有一个托管问题与此相关,它似乎找不到webconfig文件。至少错误消息是这样说的

我应该做什么样的设置?我应该更改的配置?我是否应该在web API中设置一些可能遗漏的SSL设置?当我开始这个项目时,我告诉它强制使用HTTPS,但如果这是错误的话,我肯定会收到另一条错误消息

我已尝试将目标运行时设置为x64和x86进行发布

我以前从未将这样的API发布到Azure之外的任何地方,所以我可能做错了一两件事,但我看不出它应该是什么?我在谷歌上搜索了一下,但没有找到任何与之相关的有效信息

大多数解决方案似乎都与更改服务器环境有关,而我对此没有太多控制权,我主要是控制应用程序/web api,至少在我看来是这样的

希望你有什么建议,我洗耳恭听

附带问题:我应该为此使用IIS管理器吗?我目前通过Visual Studio 2017发布

用于进一步理解的图像

发布设置

部署/发布的文件

我收到一条错误消息

编辑:

我尝试将文件移动到同一个域上的/public_html,因为ISS管理器似乎表明它希望配置文件在那里

这导致了一条不同的错误消息,如下所示

来自错误消息的链接:


很难说清楚,但我认为问题在于服务器上没有安装ASP.NET核心托管捆绑包。在IIS中托管有两个部分。首先,需要.NET核心运行时,然后需要IIS的ASP.NET核心托管模块。作为自包含式部署可以为您购买运行时,而不是IIS中的托管模块。通过发布ASP.NET核心应用程序创建的Web.config中存在非标准部分。托管模块支持IIS中的这些配置部分(以及其他内容)。因此,配置错误似乎暗示这不会发生


如果你不能控制服务器,你就无能为力了。老实说,在这一点上,我不会主持任何你至少不能控制环境的地方。你可以从众多的托管服务中获得一个完整的VPS,每月花费5美元或更少。要么继续在Azure中托管,要么调查其他受人尊敬的云提供商,如DigitalOcean、AWS等。

webhosts常见问题解答部分说他们使用“RuntimeFrameworkVersion 1.1”,你认为我是否可以说服他们运行2.1,让他们相信这是可行的?我在网络主机上可能比看起来更自由。我还没那么有经验,所以也许我就是看不出来。但似乎每当我试图通过IIS管理器访问某些内容时,都会被拒绝。有没有关于我至少应该在那里接触到什么的提示?嗯,坦白说,这只是对那个主持人的又一次打击。坦率地说,ASP.NET核心的1.X分支是垃圾。它还没有准备好迎接黄金时间。我不认为问他们是否可以升级会有什么伤害,但老实说,即使他们可以升级,他们将它保留在1.1上这么长的时间对于未来的更新来说并不是一个好兆头。就托管模块而言,这不是通过IIS可以做到的。它必须由具有管理员权限的人安装在系统上。再次,我想你可以问,但真的在什么时候,你只是转到一个更好的托管供应商?我主要使用它们,因为他们是新手友好和便宜,再加上我不认为这可能是一个问题,因为它的广告,NETClar作为他们的托管能力的一部分举办。我想我会给他们发个短信,问问他们,因为总的来说我喜欢他们的服务。但我能理解你提出这个问题的原因。值得注意的是,他们只指定了对“.NET Core”的支持,而不一定是ASP.NET Core。这可能只是对术语的技术误用,但可以在Kestrel下运行完全自托管的ASP.NET Core,或者使用IIS以外的其他工具作为反向代理。换句话说,他们仍然可以声称支持.NET Core,但不一定支持使用IIS作为反向代理运行ASP.NET Core webapp(这是唯一需要安装托管捆绑包的场景)。这会很奇怪,但也有可能。在IIS服务器上安装.NET Core托管安装程序包解决了我遇到的问题(与原始海报完全相同的错误消息)。这是针对ASP.NET Core 5 Web API的,甚至尝试将其作为一个自包含的包运行。谢谢