You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 1.1部署Azure App Service后路由404问题排查

解决ASP.NET Core 1.1部署Azure App Service后的404问题

你遇到的这个404问题很典型——请求被IIS当成静态文件去查找物理路径,说明ASP.NET Core的路由系统根本没接手处理请求。咱们一步步来排查修复:

1. 删掉Program.cs里多余的UseUrls配置

你在WebHostBuilder里硬编码了UseUrls("http://myapp.azurewebsites.net"),这完全没必要。Azure App Service会通过环境变量自动配置应用的监听地址和端口,硬编码反而会导致应用无法响应平台的请求。修改后的代码如下:

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();
host.Run();

2. 完善Startup.cs的MVC路由配置

你用了AddMvcCore而不是AddMvc,这个方法只提供MVC核心功能,默认不包含路由服务和中间件,得手动补上:

  • 在ConfigureServices里添加路由服务:
public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddMvcCore(opts => {
        opts.ModelBinderProviders.Insert(0, new CommaDelimitedArrayModelBinderProvider());
    })
    .AddRouting(); // 新增这一行,注册路由服务
    ...
}
  • 必须在Configure方法里添加路由中间件(你没贴这段代码,但这是关键):
public void Configure(IApplicationBuilder app)
{
    // 确保这一行在其他中间件逻辑之前执行
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "api/{controller=Values}/{action=Get}/{id?}");
    });
}

如果没有UseMvc,请求根本不会进入MVC路由处理链,自然会被IIS当成静态文件去查找物理路径。

3. 修正Web.config的拼写错误

你的web.config里stdoutLogEnabled="flase"是拼写错误(应该是false),这个错误会导致你无法生成标准输出日志,没法排查后续问题。修正后:

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>

如果需要排查启动日志,可以把stdoutLogEnabled改成true,Azure会在D:\home\site\wwwroot\logs下生成日志文件。

4. 验证部署包内容

确保你部署的是发布后的编译输出文件,而不是项目源码。可以通过Kudu控制台(https://myapp.scm.azurewebsites.net)查看D:\home\site\wwwroot目录,里面应该包含你的dll文件、web.config和依赖文件,而不是cs源码。

最后检查控制器路由特性

确认你的ValuesController类上标注了正确的路由特性,这样才能匹配api/values路径:

[Route("api/[controller]")]
public class ValuesController : Controller
{
    // GET api/values
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

按照上面的步骤调整后重新发布,应该就能正常访问api/values了。

内容的提问来源于stack exchange,提问作者Mihail Katrikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:02:54