为 ASP.Net Core Web API 项目创建要在启动时转到的索引页面

Posted

技术标签:

【中文标题】为 ASP.Net Core Web API 项目创建要在启动时转到的索引页面【英文标题】:Creating a index page to go to on launch for ASP.Net Core Web API Project 【发布时间】:2022-01-17 04:12:12 【问题描述】:

基本上,当我创建项目并创建一个功能性 API 时,用户可以从数据库中创建、删除等信息并运行它,我得到了可用于测试该 API 的 swagger UI。

现在我知道它有效,我想开始在网站上实际构建页面,而不是大摇大摆。但是,即使我尝试将 web.config 文件中的默认页面设置为我的 Index.cshtml,它也会大摇大摆。

基本上我的问题是,我该如何改变这个?

【问题讨论】:

【参考方案1】:

首先,您需要删除 swagger 启动设置。进入 Properties 文件夹并打开 launchSettings.json 文件,删除或清除 launchUrl 属性。

然后,您可以创建一个wwwroot 文件夹并添加默认页面:在默认页面中,您可以添加超链接以导航到swagger UI。

之后,将以下代码添加到 Configure 方法中(如果您使用的是 Asp.net 6,则可以将它们添加到 Program.cs 文件中):

        app.UseHttpsRedirection();

        var options = new DefaultFilesOptions();
        options.DefaultFileNames.Clear();
        options.DefaultFileNames.Add("mydefault.html");
        app.UseDefaultFiles(options);

        app.UseStaticFiles();


        app.UseRouting();

最后,运行API应用,结果如下:

另外,如果您使用的是MVC视图,您可以参考以下步骤:

【注意】使用这种方法,还需要去掉launch设置相关的swagger。

    使用索引操作添加 HomeController。

    添加索引视图页面

    在ConfigureServices中注册控制器并查看服务:

     services.AddControllersWithViews();
    

    配置端点

     app.UseEndpoints(endpoints =>
     
         endpoints.MapControllers();
         endpoints.MapControllerRoute(name: "default",
        pattern: "controller=Home/action=Index/id?");
    
     );
    

然后,当运行 API 应用程序时,它会显示 Home Controller Index View 页面。

【讨论】:

【参考方案2】:

首先,在项目根目录中创建一个名为 wwwroot 的目录 - 它可以是任何名称,并在其中添加您的 HTML 文件 - 您需要一个 index.html 文件。如果您使用的是 .NET 5,请修改您的 startup.cs,如果您使用的是 .NET 6,请修改您的 program.cs 并添加以下代码。

app.UseDefaultFiles();
app.UseStaticFiles(new StaticFileOptions() 

    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot"))
);

现在您运行应用程序,您将能够在浏览器中看到 index.html。注意:有时即使您更改文件,浏览器也会缓存 swagger UI - 要解决此问题,请打开浏览器开发人员工具并右键单击重新加载/刷新按钮 - 您将获得 3 个选项,选择 Empty Cache and Hard Reload 选项。它会解决你的问题。

【讨论】:

以上是关于为 ASP.Net Core Web API 项目创建要在启动时转到的索引页面的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目

Asp.net core 3.1 保护 API 和 Web 应用程序

使用angular4和asp.net core 2 web api做个练习项目

无法在 IIS Express 中运行 ASP.NET Core Web API 项目

ASP.NET Core 3.1 / 5 WeatherForecast 示例 Web API 项目引发错误 404

ASP.NET Core Web API + Angular 仿B站 目的分析以及创建 WebAPI + Angular7 项目