主要答案
如果它不存在,请在您的项目中创建一个文件夹并在该wwwroot
文件夹中创建子文件夹,例如css
, img
,这样您就可以拥有如下内容:js
wwwroot
wwwroot\css
wwwroot\img
wwwroot\js
该UseStaticFiles()
方法查找wwwroot
文件夹并使其可服务。
接下来您需要确保项目的 .csproj 文件包含以下内容:
<ItemGroup>
<None Include="wwwroot\*" />
</ItemGroup>
这基本上说 wwwroot 下的所有子文件夹和文件都将被发布。
设置好这些东西后,您的cfg.CustomStylesheetUri = new Uri("/css/custom.css", UriKind.Relative)
代码现在应该可以工作了。
备用选项
作为另一种选择,如果您想从 wwwroot 之外的不同目录提供 css 文件,则需要StaticFileOptions
在方法中指定参数UseStaticFiles()
以提供 css。这是我的工作示例,但使用ReDoc。
我正在使用扩展 Swagger 的NSwag来生成和进一步自定义我的 OpenAPI 规范文件。(通过 NSwag 的 ReDoc 使用CustomStylesheetUri
insead ofInjectStylesheet
但我想它的工作方式相同)。
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "Content")),
RequestPath = "/Content"
});
app.UseSwagger();
app.UseSwaggerUi3();
app.UseReDoc(c => {
c.Path = "/redoc";
c.DocumentPath = "/swagger/v1/swagger.json";
c.CustomStylesheetUri = new Uri("/Content/redoc-styles.css", UriKind.Relative); //added towards the end of the <head>
c.CustomJavaScriptUri = new Uri("/Content/redoc-javascript.js", UriKind.Relative); //added at the end of the <body>
});
我上面的代码引用了我创建的名为Content的文件夹,我在其中添加了css和js文件。我的文件夹位于项目的根目录:MyAPIProject/Content/redoc-styles.css
除了这个次要示例,还要确保您的 .csproj 文件包含相关条目(否则不会发布文件夹和文件):
<ItemGroup>
<Content Include="Content\css\redoc-styles.css">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="Content\js\redoc-javascript.js">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>