.net core 在.NET Core 3.1的Swagger中使用自定义索引

.net core 在.NET Core 3.1的Swagger中使用自定义索引,.net-core,swagger,swagger-ui,swashbuckle,.net Core,Swagger,Swagger Ui,Swashbuckle,通过网络搜索,我发现我可以在swagger中替换index.html文件。我遵循大多数人所说的,我可以用自定义的索引文件替换索引文件。只需在项目中的某个位置放置index.html文件,将其标记为Embed resource,并在Startup类的Configure函数中添加几行即可 然后我从git项目()复制了索引文件来修改它 我的自定义索引放在一个名为Swagger的文件夹下,它可以很好地加载。但一旦我重新加载页面,我会得到一个异常:“ArgumentException:流不可读。” 我的配

通过网络搜索,我发现我可以在swagger中替换index.html文件。我遵循大多数人所说的,我可以用自定义的索引文件替换索引文件。只需在项目中的某个位置放置index.html文件,将其标记为Embed resource,并在Startup类的Configure函数中添加几行即可

然后我从git项目()复制了索引文件来修改它

我的自定义索引放在一个名为Swagger的文件夹下,它可以很好地加载。但一旦我重新加载页面,我会得到一个异常:“ArgumentException:流不可读。”

我的配置选项如下所示:

string path = GetType().Namespace + ".Swagger.index.html";
var resource = GetType().Assembly.GetManifestResourceStream(path);

app.UseSwagger(config => { config.RouteTemplate = $"{doc_path}/{{documentName}}/{doc_file}"; });
app.UseSwaggerUI(config =>
{
    config.RoutePrefix = doc_path;
    config.SwaggerEndpoint($"{doc_vers}/{doc_file}", "Rest API Doc");
    config.InjectStylesheet($"style.css");
    config.IndexStream = () => resource);
});

我还尝试将index.html放在wwwroot文件夹下,它再次加载,但情况变得更糟。网站在javascript控制台上仅显示标题的%(HeadContent),%(DocumentTitle)和一些错误。

问题在于,在IndexStream的lambda表达式之外创建资源路径字符串。这一切都是关于.NETCore如何处理不同的api调用,以及如何为每个调用构造对象

我必须替换这些行:

string path = GetType().Namespace + ".Swagger.index.html";
var resource = GetType().Assembly.GetManifestResourceStream(path);

app.UseSwaggerUI(config =>
{
    -- some code here
    config.IndexStream = () => resource);
});
据此:

app.UseSwaggerUI(config =>
{
    -- some code here
    config.IndexStream = () => GetType().Assembly.GetManifestResourceStream
    (
            GetType().Namespace + ".Swagger.index.html")
    );
});
关于将index.html放在wwwroot文件夹下,swagger似乎会替换文件的一些文本,如果索引文件是使用IndexStream函数引用的,它就不能这样做