Aspnetcore Swagger всегда перенаправляет, и я не могу получить доступ к другим файлам через URL - PullRequest
0 голосов
/ 28 августа 2018

Я публикую в веб-приложении Microsoft Azure один ASPNETCORE WebAPI с Swagger, и он работает хорошо. Но мой API выполняет загрузку файла в одну папку. Когда я пытаюсь получить доступ к загруженным файлам через URL-адрес, приложение перенаправляет меня в дом Swagger. Поэтому я не могу получить доступ к загруженным файлам. Как я могу это исправить?

Например: URL моего API:

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

загруженный файл находится на

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

Если вы получите доступ к URL-адресу файла, вы будете перенаправлены на дом чванства.

Вот моя 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")));
        }

И файл web.config, расположенный внутри /site/wwwroot:

<?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>

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Как заметил Алсами, перенаправление происходит из-за строки, которая делает ответ перенаправленным на сваггер для любых запросов, не обработанных в другом месте.

Однако вам нужно добавить

app.UseStaticFiles();

для включения подачи статических файлов, например загруженных.

(Примечание по безопасности. Обязательно тщательно ограничивайте типы и размеры загружаемых файлов, если вы собираетесь предоставлять их для общего доступа.)

0 голосов
/ 28 августа 2018

Это из-за этой строки

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

Удалите это, и перенаправления больше не будут происходить.

...