【问题标题】:Swagger/ReDoc overriding Razor pagesSwagger/ReDoc 覆盖 Razor 页面
【发布时间】:2020-07-01 19:57:48
【问题描述】:

我正在尝试使用 .Net Core 3.1 构建一个包含 API 的 Razor 页面站点。实施 Swashbuckle/Swagger/ReDoc 后,我的主页/根页面不再工作 (404),尽管 ReDoc 生成的页面可以。每次我运行该项目时,它都会加载 localhost:{port}/index.html 而不是 index.cshtml Razor 页面。

有没有办法改变这种行为,让我的根 url 指向 Razor 索引文件?

这是我在 Startup.cs 中所做的:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
    
    //Misc other config
    
    services.AddControllers();

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo
        {
            Title = "API Documentation",
            Version = "v1",
            Description = File.ReadAllText($"{AppContext.BaseDirectory}\\wwwroot\\DocumentationMarkdown.txt")

        });
        var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
        var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
        c.IncludeXmlComments(xmlPath, true);
    });
}


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
        endpoints.MapControllers();
    });
    app.UseSwagger();
    app.UseReDoc(c =>
    {
        c.SpecUrl("/swagger/v1/swagger.json");
        c.EnableUntrustedSpec();
        c.ScrollYOffset(10);
        c.HideHostname();
        c.HideDownloadButton();
        c.ExpandResponses("200,201");
        c.NoAutoAuth();
        c.PathInMiddlePanel();
        c.HideLoading();
        c.NativeScrollbars();
        c.SortPropsAlphabetically();
        c.DocumentTitle = "API Documentation";
    });
}

我的页面结构是这样的:

Pages
    Shared
        _Layout.cshtml
    _ViewStart.cshtml
    Index.cshtml
    Index.cshtml.cs

【问题讨论】:

    标签: asp.net-mvc razor swagger asp.net-core-3.1 swashbuckle.aspnetcore


    【解决方案1】:

    好的,我想通了...基于这篇文章Aspnet core 2.2 default route changed to "~/index.html" after installing Swashbuckle.AspNetCore package

    我添加了 RoutePrefix,这是我之前做过的,但问题当然是浏览器缓存。稍后进行一次硬重置,我开始做生意了。也请注意,以上适用于 .Net Core 3.1 以及更低版本。

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      相关资源
      最近更新 更多