我对ASP有问题.NET核心web应用程序运行在IIS 10上.

索引.html加载完美,但后端请求失败,IIS 10上出现404错误代码.从VisualStudio和IIS Express中,它可以完美地工作.

有人知道我如何修复后端请求吗?

这是我的节目.cs

public static void Main(string[] args)
{
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

下面是我在Startup.cs中的配置方法

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseDefaultFiles();

    app.UseStaticFiles();

    app.UseIdentity();

    // Custom middleware for Angular UI-Router
    app.Use(async (context, next) =>
    {
        if (!Path.HasExtension(context.Request.Path.Value)
        && context.Request.HttpContext.Request.Headers["X-Requested-With"] != "XMLHttpRequest"
        && context.Request.Method.ToUpper() != "POST"
        && context.Request.Method.ToUpper() != "PUT"
        && context.Request.Method.ToUpper() != "DELETE")
        {
            await context.Response.WriteAsync(File.ReadAllText(env.WebRootPath + "/index.html"));
        }

        await next();
    });

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "api/{controller=Home}/{action=Index}/{id?}");
    });
}

推荐答案

你的代码正在我的机器上和Kestrel一起工作.一个很好的故障排除步骤是找出问题是否出在ASP.NET核心应用程序或IIS宿主配置.

从项目的根本上try 这个方法.

dotnet restore
dotnet run

你会看到这样的情况:

Hosting environment: Production
Content root path: C:\MyApplicationPath
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

在浏览器中,转到以下两个URL.如果它们不工作,则说明您的应用程序有问题.如果它们工作正常,则表明您的IIS托管有问题.

localhost:5000        // you will see your index.html page
localhost:5000/api    // you will see your default routes output

Asp.net相关问答推荐

ASP.NET MVC项目中的产品采购并发性测试

.NET 框架 3.5 和 TLS 1.2

如何从 ASP.NET 中的代码隐藏文件访问 IFRAME?

从 asp.net 中的 Web.config 获取连接字符串

如何在 ASP.NET 全球化中配置不变文化?

在哪里可以记录 ASP.NET Core 应用程序的启动/停止/错误事件?

Server.Transfer 在执行子请求时抛出错误.如何解决?

解析器错误消息:文件/TestSite/Default.aspx.cs不存在

如何通过 Asp.net 中的命令参数传递多个值?

解析器错误消息:无法加载类型sometype

System.Linq.Dynamic 不支持 OrderByDescending("someColumn")?

如何解决 Kerberos 双跳问题?

ASP.Net 自定义客户端验证

如何在 C# 应用程序中调用 VBScript 文件?

HttpContext.Current 在 MVC 4 项目中未解决

如何在 ASP.NET 中获取原始请求正文?

如何直接在 .aspx 页面中访问 web.config 设置?

在 ASPNET 标识 2.0 中禁用用户

为什么 IFormFile 显示为空,我该如何解决?

如何创建代表 colored颜色 的随机十六进制字符串?