我正在构建一个ASP.NET CORE Web API并使用Swagger作为文档。我无法更改图标。我在wwwroot下有一个swagger-ui目录,我放置了我的图标,但图标从未出现过。此外,我正在使用自定义js文件中的favascript更改favicon。
那么,如何改变Swagger的图标呢?
你必须基本上覆盖它。默认情况下,Swagger UI将图标设置为从Swagger UI根目录中提取。例如,如果您在/swagger-ui
上加载文档,则会从/swagger-ui/favicon-32x32.png
和/swagger-ui/favicon-16x16.png
中提取favicon。因此,您可以将此目录添加到wwwroot
并在那里添加您自己的favicon图像。
你需要注入jscript如下:
1-创建/assets/js/docs.js如下:
(function() {
var link = document.querySelector("link[rel*='icon']") || document.createElement('link');;
document.head.removeChild(link);
link = document.querySelector("link[rel*='icon']") || document.createElement('link');
document.head.removeChild(link);
link = document.createElement('link');
link.type = 'image/x-icon';
link.rel = 'shortcut icon';
link.href = '../assets/images/logo_icon.png';
document.getElementsByTagName('head')[0].appendChild(link);
})();
2-在startup.cs中加载脚本
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApiVersionDescriptionProvider provider)
{
app.UseSwaggerUI(
options =>
{
options.InjectJavascript("../assets/js/docs.js");
});
}
注意:确保在.NET Core Configure方法中启用静态文件。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApiVersionDescriptionProvider provider)
{
app.UseStaticFiles(); // For the wwwroot folder
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "assets/images")),
RequestPath = "/assets/images"
});
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "assets/js")),
RequestPath = "/assets/js"
});
}
如果您只是将您的favicon.ico放在wwwroot文件夹中的根目录下,也可以实现这一点:wwwroot/favicon.ico
。放置在根目录下,favicon.ico将用作默认浏览器选项卡图标。
当然,如前所述,您需要确保在Configure()方法中有app.UseStaticFiles();
才能在wwwroot中提供文件。
最后还要确保.csproj文件中包含以下内容:
<ItemGroup>
<None Include="wwwroot\*" />
</ItemGroup>