我正在IIS服务器上部署.net核心应用程序,并且在swagger UI中遇到了找不到swagger.json的问题。当我在本地运行(开发环境)时,一切运行正常,但是当我在IIS服务器上部署它时,找不到swagger.json文件。
以前,我在.net core 2.1应用程序中遇到过此问题,我通过编写以下代码来获取虚拟基本路径来解决此问题。
string basePath = Environment.GetEnvironmentVariable("ASPNETCORE_APPL_PATH");
basePath = basePath == null ? "/" : (basePath.EndsWith("/") ? basePath : $"{basePath}/");
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"{basePath}swagger/v1/swagger.json", "Test.Web.Api");
c.RoutePrefix = "";
});
Run Code Online (Sandbox Code Playgroud)
我试过下面的代码来解决它:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"{env.ContentRootPath}swagger/v1/swagger.json", "Test.Web.Api");
//OR
c.SwaggerEndpoint($"{env.WebRootPath}swagger/v1/swagger.json", "Test.Web.Api");
c.RoutePrefix = "";
});
}
Run Code Online (Sandbox Code Playgroud)
但是上面的代码没有用,因为它返回实际的物理路径而不是虚拟路径。
有谁知道如何在不起作用的.net core 2.2中获取虚拟路径Environment.GetEnvironmentVariable("ASPNETCORE_APPL_PATH");。任何线索都将有所帮助。
我有一个电子应用程序,下面是文件夹结构。
app
|--node_modules
|--somepackage/src
|--src
Run Code Online (Sandbox Code Playgroud)
我正在使用electronic-packager打包此应用程序,因此我尝试通过执行以下命令来忽略根级src文件夹。
"scripts": {
"pack": "rimraf ./packaged/ && electron-packager . Test.Client --app-version=0.0.1 --prune --out=packaged --platform=win32 --arch=x64 --overwrite --ignore=webpack.config.js --ignore=/src
},
Run Code Online (Sandbox Code Playgroud)
但是这里的问题是我的node_modules也有一些包含src文件夹的软件包,而这些src文件夹也被--ignore = / src语句忽略了。