如何使用PowerShell创建IIS网站以托管.NET Core 2.0应用程序,错误代码0x8007000d。

18 浏览
0 Comments

如何使用PowerShell创建IIS网站以托管.NET Core 2.0应用程序,错误代码0x8007000d。

预期结果

IIS正确地托管我的应用程序,并且当我访问我的应用程序的URL(例如:blabla/swagger)时,我能够看到描述我的应用程序的Swagger UI界面。

问题

当我尝试访问我的应用程序时,显示如下错误:

HTTP Error 500.19 - 内部服务器错误
请求的页面无法访问,因为页面的相关配置数据无效。

信息

我使用.NET Core 2.0构建了一个应用程序,并且通过Visual Studio运行它,由Kestrel进行托管。

然而,我需要将这个应用程序部署到不同的服务器上,由于Kestrel不支持主机名,所以我需要在IIS中进行托管。当我通过Kestrel运行它时,我能够正确访问它,并且通过导航到url/swagger地址,我能够看到描述应用程序的正确Swagger页面。

我的应用程序是从Visual Studio中发布的,这意味着它的发布文件夹中包含应用程序所需的所有dll文件。它被发布为一个依赖框架的应用程序,而不是一个独立的应用程序,但这不应该有影响。

如何复制这个问题

由于我希望有一天能够在Docker容器中的IIS中进行托管,所以我正在尝试使用PowerShell脚本在IIS中进行托管。我所做的是:

New-Website -Name 'myTestApp' -force -Port 8080 -PhysicalPath
'C:\Users\myUser\Desktop\Docker\PublishOutput' -ApplicationPool 'MyAppPoolTest'

其中C:\Users\myUser\Desktop\Docker\PublishOutput是Visual Studio发布应用程序的路径。提前感谢!

这是Visual Studio在发布时生成的web.config文件:



  
    
      
    
    
  


错误页面如下:

enter image description here

我是否以错误的方式设置了web.config文件?

0
0 Comments

为了在IIS上托管.NET Core 2.0应用程序,创建IIS网站需要使用PowerShell。然而,在创建过程中可能会遇到错误0x8007000d。下面是解决此问题的原因和解决方法。

问题的解决方法是,系统需要安装dotnet core windows hosting bundle。该捆绑包安装了.NET Core Runtime、.NET Core Library和ASP.NET Core Module。

解决方法的文档链接:https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.1&tabs=aspnetcore2x

直接下载链接为.netcore 2.0.6的捆绑包:https://download.microsoft.com/download/8/D/A/8DA04DA7-565B-4372-BBCE-D44C7809A467/DotNetCore.2.0.6-1-WindowsHosting.exe

以上提供的解决方法中提供了相同的文档链接。是的,当你在Google上搜索这个问题时,这个链接也是你找到的第一个结果。不幸的是,你的解决方案中没有列出解决我的问题的关键点。

0
0 Comments

问题原因:

1. 需要发布网站,并将IIS网站指向发布的文件夹。

2. 应用程序池必须设置为"No Managed code"。

3. 应用程序池身份用户"IIS AppPool\{AppPoolName}"必须对发布的网站文件夹具有读取权限。

解决方法:

1. 发布你的网站,并记住发布的文件夹路径。

2. 打开IIS管理器,找到要托管网站的应用程序池。

3. 右键单击应用程序池,选择"高级设置"。

4. 在"高级设置"对话框中,将"托管管道模式"设置为"无托管代码"。

5. 确认更改并关闭对话框。

6. 找到你的网站在IIS管理器中的位置,并右键单击它。

7. 选择"基本设置"。

8. 在"基本设置"对话框中,将"物理路径"设置为你记住的发布文件夹路径。

9. 确认更改并关闭对话框。

10. 找到应用程序池的身份用户,并为其授予发布的网站文件夹的读取权限。

0