首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swagger/ReDoc覆盖Razor页面

Swagger/ReDoc覆盖Razor页面
EN

Stack Overflow用户
提问于 2020-07-02 03:57:49
回答 1查看 566关注 0票数 0

我正在尝试使用.Net Core3.1构建一个带有内置应用程序接口的剃刀页面站点。一旦实现了Swashbuckle/Swagger/ ReDoc,我的主页/根页面就不再工作了(404),尽管ReDoc生成的页面可以。每次我运行这个项目时,它加载的是localhost:{port}/index.html而不是index.cshtml Razor页面。

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

下面是我在我的Startup.cs中做的事情:

代码语言:javascript
复制
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";
    });
}

我的页面结构是这样的:

代码语言:javascript
复制
Pages
    Shared
        _Layout.cshtml
    _ViewStart.cshtml
    Index.cshtml
    Index.cshtml.cs
EN

回答 1

Stack Overflow用户

发布于 2020-07-02 04:20:43

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

我添加了RoutePrefix,这是我以前做过的,但问题当然是浏览器缓存。一次硬重置后,我就可以做生意了。还需要注意的是,上面的方法适用于.Net核心3.1和更低版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62684456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档