IIS 上的 Asp.net Core 2 发布项目只返回一个空白页?

Posted

技术标签:

【中文标题】IIS 上的 Asp.net Core 2 发布项目只返回一个空白页?【英文标题】:Asp.net Core 2 publish project on IIS returns just a blank page? 【发布时间】:2018-04-24 15:43:44 【问题描述】:

我正在开发一个 Asp.net core 2.0 项目,我发布它并希望在 IIS 上运行。 当项目第一次在 IIS 上运行时,数据库会自动创建并在 IIS 上播种一些表,一切正常。但是什么都不会显示,只是返回一个空白页面而没有任何错误。

web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule"     resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\LibraryProject.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
<!--ProjectGuid: b874d2d9-471b-494a-828c-257173c5a413-->

和 Program.cs :

public class Program


    public static void Main(string[] args)
    
        var host = BuildWebHost(args);

        using (var scope = host.Services.CreateScope())
        
            var services = scope.ServiceProvider;
            try
            
                var userManager = services.GetRequiredService<UserManager<ApplicationUser>>();
                var roleManager = services.GetRequiredService<RoleManager<ApplicationRole>>();
                var context = services.GetRequiredService<ApplicationDbContext>();
                SeedData.Seeding(userManager, roleManager, context);
            
            catch (Exception ex)
            
                var logger = services.GetRequiredService<ILogger<Program>>();
                logger.LogError(ex, "An error occurred while seeding the database.");
            
        

        host.Run();
         

    public static IWebHost BuildWebHost(string[] args) =>
         WebHost.CreateDefaultBuilder(args)
               .UseKestrel()
               .UseContentRoot(Directory.GetCurrentDirectory())
               .UseIISIntegration()
               .UseStartup<Startup>()
               .Build();


我还在其他 dll 附近的发布文件夹中创建了 logs\stdout 文件夹。 我从这个link 设置了 IIS。我的项目出了什么问题?

【问题讨论】:

有什么答案吗??!!! 1) 我们在这里没有报酬,所以当你得到帮助时你会得到帮助。不要讨厌。 2)空白页通常是 404,因为您必须配置状态码中间件才能实际处理 404 之类的事情。它也可能是 401 或 403 之类的东西。 3) 无论如何,这里没有足够的帮助你。在浏览器中进行自己的研究、添加日志记录、检查来自开发者控制台的响应。 @ChrisPratt 非常感谢,我的项目由 asp.net core 1.1 创建和开发,然后迁移到 asp.net core 2。这可能是问题吗? 也许吧。也许不吧。首先找出实际发生了什么:这是 404 吗?如果是这样,请检查您的路由。这是401还是403?检查您的身份验证。它实际上是否以 200 的形式返回但仍为空白?检查你的行动/观点。你有任何客户端错误吗?可能是 JS 库或代码阻塞。可能有一千种不同的原因。再次,做你自己的调查。找出问题后,如果您仍需要帮助,我们可能会帮助您解决问题。 如果将 stdoutLogEnabled="false" 更改为 stdoutLogEnabled="true",您可以获得更好的调试输出 【参考方案1】:

如果您已从当前模板集创建项目,则 Application Insights 已启用。这为我修复了它:

在您的 Program.cs 中将以下方法添加到 WebHost.CreatDefaultBuilder:

.UseApplicationInsights()

在这里找到:https://developercommunity.visualstudio.com/content/problem/92979/some-aspnet-core-projects-fail-to-add-the-applicat.html

【讨论】:

【参考方案2】:

我在这里玩游戏有点晚了,但我没有看到其他人回答。希望这会对某人有所帮助。

当您只看到一个空白页并且除了空白页之外没有其他响应时,这可能是由以下两种情况之一引起的。我相信还有其他人,但这是我见过的两个:

    损坏的 web.config 与 IIS 冲突的 web.config。当您的 IIS 配置中锁定特定部分时,可能会发生这种情况。

【讨论】:

以上是关于IIS 上的 Asp.net Core 2 发布项目只返回一个空白页?的主要内容,如果未能解决你的问题,请参考以下文章

IIS 10 上的 ASP.NET Core 404 错误

将 ASP NET Core 部署到 IIS

从 IIS 上的 ASP.NET Core 应用程序请求超时

小5聊Asp.Net Core基础之发布不成功或者覆盖IIS上的DLL提示程序正在打开

部署在 IIS 上的 ASP.NET Core 对长时间运行的请求返回 502 错误

先定一个小目标Asp.net Core 在IIS上的托管运行