【问题标题】:Aspnetcore Swagger always redirecting and I can't access other files through urlAspnetcore Swagger 总是重定向,我无法通过 url 访问其他文件
【发布时间】:2019-02-03 11:56:50
【问题描述】:

我使用 Swagger 向 Microsoft Azure Web 应用程序发布了一个 ASPNETCORE WebAPI,它运行良好。但是,我的 API 将文件上传到一个文件夹。当我尝试通过 URL 访问上传的文件时,应用程序会将我重定向到 Swagger 主页。所以我无法访问上传的文件。我该如何解决?

例如: 我的 API URL 是

http://api.guarda.digital/swagger/

上传的文件在

http://api.guarda.digital/uploads/1535281344287289147145.jpg

如果您访问文件 url,您将被重定向到 swagger 主页。

这是我的Startup.cs 配置:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info { Title = "Guarda Digital API", Version = "v1" });
            });                                                                                    
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseMvc();

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "Guarda Digital API V1");
            });

             app.Run(async (context) => await Task.Run(() => context.Response.Redirect("/swagger")));
        }

还有位于/site/wwwroot内部的web.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\GD.WebAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

【问题讨论】:

    标签: .net asp.net-core swagger azure-web-app-service


    【解决方案1】:

    那是因为那条线

    app.Run(async (context) => await Task.Run(() => context.Response.Redirect("/swagger")));
    

    删除它,重定向将不再发生。

    【讨论】:

      【解决方案2】:

      正如 alsami 所指出的,重定向的发生是因为将响应重定向到 swagger 的行,以处理未在其他地方处理的任何请求。

      但是,你需要添加

      app.UseStaticFiles();
      

      启用静态文件的服务,例如上传的文件。

      (安全说明。如果您要向公众提供上传文件,请务必仔细限制上传文件的类型和大小。)

      【讨论】:

      • 谢谢,但即使使用这种方法,我仍然无法访问任何类型的文件,例如 jpg、png、txt 等。您对我可能缺少的配置有任何想法吗?
      • 您需要确保内容根路径与您认为的文件夹匹配。尝试查看此博客文章以获得更多故障排除帮助。 jakeydocs.readthedocs.io/en/latest/fundamentals/…
      猜你喜欢
      • 2021-05-21
      • 1970-01-01
      • 2021-03-21
      • 2016-07-04
      • 2016-04-28
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 2012-12-14
      相关资源
      最近更新 更多