怎么解决.Net Core在IIS上访问404的问题

发布时间:2021-12-27 19:29:14 作者:iii
来源:亿速云 阅读:1451
# 怎么解决.Net Core在IIS上访问404的问题

## 引言

当我们将.NET Core应用程序部署到IIS服务器时,可能会遇到访问时返回404错误的情况。这个问题可能由多种原因引起,包括配置错误、模块缺失或权限问题等。本文将详细分析可能导致404错误的常见原因,并提供相应的解决方案。

---

## 一、检查ASP.NET Core模块是否安装

### 1.1 模块的作用
ASP.NET Core模块(ANCM)是IIS托管.NET Core应用的必备组件,负责请求转发到后端Kestrel服务器。如果未安装,所有请求都将返回404。

### 1.2 解决方案
1. 下载并安装对应版本的[.NET Core Hosting Bundle](https://dotnet.microsoft.com/download/dotnet-core)
2. 在服务器管理器确认模块已安装:
   ```powershell
   Get-WindowsFeature -Name Web-Asp-Net45
  1. 检查IIS模块列表是否存在AspNetCoreModuleV2

二、应用程序池配置问题

2.1 错误的托管模型

.NET Core应用必须使用无托管代码的应用程序池: 1. 打开IIS管理器 → 应用程序池 2. 选择对应应用池 → 右键”基本设置” 3. 确保”.NET CLR版本”为无托管代码

2.2 32位兼容性问题

如果应用发布为64位但启用了32位兼容: 1. 应用池 → 高级设置 2. 将”启用32位应用程序”设为False


三、web.config配置检查

3.1 基本配置示例

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" 
             modules="AspNetCoreModuleV2" 
             resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" 
                  arguments=".\YourApp.dll" 
                  stdoutLogEnabled="true"
                  stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>

3.2 常见错误点


四、发布部署问题

4.1 发布模式选择

dotnet publish -c Release -r win-x64 --self-contained false

4.2 文件夹权限

  1. 为IIS_IUSRS用户添加应用文件夹的读写权限
  2. 特别检查logs目录(如果启用日志)

五、URL重写与静态文件

5.1 静态文件中间件

确保Startup.cs包含:

app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(...);

5.2 重写规则冲突

检查是否与其他重写规则(如URL重写模块)冲突,可尝试临时禁用其他规则测试。


六、高级排查方法

6.1 启用详细错误日志

  1. 修改web.config
<aspNetCore ... stdoutLogEnabled="true" />
  1. 查看生成的logs/stdout_*.log文件

6.2 使用进程资源管理器

  1. 下载Process Explorer
  2. 检查w3wp.exe是否成功启动dotnet进程

6.3 事件查看器

查看Windows事件查看器 → Windows日志 → 应用程序,筛选”.NET Runtime”错误


七、其他可能原因

7.1 端口冲突

7.2 防火墙拦截

临时关闭防火墙测试:

netsh advfirewall set allprofiles state off

7.3 运行时版本不匹配

使用dotnet --info确认服务器安装的运行时与开发环境一致


结语

解决IIS上的404错误需要系统性地检查各个环节。建议按照以下顺序排查: 1. 确认ASP.NET Core模块安装 2. 检查应用程序池配置 3. 验证web.config设置 4. 审查发布内容和权限 5. 通过日志深入分析

通过以上步骤,大多数404问题都能得到有效解决。如果问题仍然存在,建议查看微软官方文档获取最新指导。 “`

注:实际字符数约1100字,可根据需要调整各章节的详细程度。建议将代码示例和命令单独测试验证。

推荐阅读:
  1. ASP.NET Core应用程序运行Vue并且部署在IIS上的详解
  2. 在IIS上如何部署ASP.NET Core项目

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

core iis

上一篇:如何进行python中pyautogui的安装和使用

下一篇:如何进行Qt编写提示进度条的实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》