【问题标题】:Running a simple ASP.NET Core app with IIS giving a blank page使用 IIS 运行一个简单的 ASP.NET Core 应用程序,给出一个空白页
【发布时间】:2020-05-12 13:41:07
【问题描述】:

我通过以下步骤创建了一个简单的 ASP.NET Core Web 应用程序:

创建了 ASP.NET core 项目的 Empty 模板:

添加了一个带有 index.html 页面的 wwwroot 文件夹。

Startup.cs 是非常默认的,只添加了一行:

app.UseDefaultFiles();

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace WebApplication1
{
    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseDefaultFiles();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });
            });
        }
    }
}

构建解决方案并将我的 IIS 网站指向 Web 项目的根目录:

我在通过 IIS 运行站点时看到一个空白页面(没有控制台错误,权限已经授予解决方案的根目录):

我期待 index.html 的输出出现在应用程序 URL 的根目录中。 ASP.NET 核心项目是否需要做任何特殊操作才能使其通过 IIS 运行?

我也想通过在 Visual Studio 中为该给定站点附加 IIS 进程来进行调试?

你能分享我在那里缺少的东西吗?

同样的步骤似乎也适用于 ASP.NET 框架。我不想在 VS 上执行 Run 命令并在 localhost 上运行站点,我的目标是使用 IIS/ 使用有效 url 运行站点,以便我可以通过将进程附加到 Visual Studio 解决方案来直接调试。

【问题讨论】:

    标签: c# asp.net asp.net-core iis


    【解决方案1】:

    只是一些想法。

    1. 在 VS 中运行它是“要么”将使用 IIS Express 或 IIS 本身,具体取决于您的设置。因此,如果您选择 IIS,您既可以轻松部署到 IIS,也可以直接实际调试它(意味着它在那里运行)。

    2. 您可以通过使用 Edge/Chrome 连接到您的 IIS 站点来附加 np,然后在您的 VS 中选择 Debug\Attach To Process,您只需要确定哪个进程即可。现在,如果它在另一台服务器上,那么您需要配置远程调试并将其安装在该机器上并正确打开端口等。

    您应该考虑将最初的调试(开发时间)与需要远程调试(生产/测试)的时间分开,因为这样可以节省您分配的时间。

    至于你的问题,特别是两件事

    1. 我会使用 app.UseFileServer(); 因为它把两者 app.UseDefaultFiles app.UseStaticFiles 以正确的顺序等。

    对比 app.UseDefaultFiles(); 一个人

    1. 取出 Hello world 的东西。我相信它会阻止您(但请先执行 #1)

    最后,您可能需要安装 NuGet 包 Microsoft.AspNetCore.StaticFiles

    干杯,

    【讨论】:

      【解决方案2】:

      要在 iis 中托管 .net 站点,首先需要从 Visual Studio 发布,然后将该发布文件夹指向 iis 站点文件夹路径。

      要运行 .net core 站点,您需要安装 .NET Core 托管包和 ASP.NET Core Runtime。

      根据您的版本下载并安装运行时和托管包。

      https://dotnet.microsoft.com/download/dotnet-core/3.1

      另一件事是你需要使用 app.UseStaticFiles();服务索引文件。

      public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
          {
              app.UseDefaultFiles();
      
      
              if (env.IsDevelopment())
              {
                  app.UseDeveloperExceptionPage();
              }
      
              app.UseStaticFiles();
      
              app.UseRouting();
      
              app.UseEndpoints(endpoints =>
              {
                  endpoints.MapGet("/", async context =>
                  {
                      await context.Response.WriteAsync("Hello World!");
                  });
              });
          }
      

      您可以点击以下链接了解如何在 iis 中托管 .net core 应用程序的详细信息:

      https://docs.microsoft.com/en-us/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio

      https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1

      编辑:

      要在 Visual Studio 中附加 iis 工作进程,您可以按照以下步骤操作:

      1)从 iis 运行您的网站。

      2)在iis中转到服务器节点,从中间窗格双击工作进程。

      您会发现您的站点进程 ID 请注意。

      3)以管理员身份打开visual studio

      4) 打开您的项目。

      5)debug->附加到进程

      6)勾选“显示所有用户的进程”复选框,选择 w3wp.exe。您可以通过进程 ID 搜索您的进程。

      7)点击附加。

      【讨论】:

      • 我的目标是通过 IIS 调试它 >> 在 Visual Studio 中附加进程。
      • 感谢您的回复。明天再检查一下。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 2012-02-14
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多