2016-06-28 5 views
7

Я интегрировал swagger в моем приложении ASP.NET Core RC1 со следующими пакетами NuGet.ASP.NET Core RC1 - Интеграция Swagger WebAPI - «Ошибка» SchemaValidationMessages

"Swashbuckle.SwaggerGen": "6.0.0-rc1-final", 
"Swashbuckle.SwaggerUi": "6.0.0-rc1-final" 

Вот код интеграции в swagger.

public void ConfigureServices(IServiceCollection services) 
    { 
     .... 
     ..... 

     //*** Configure Swagger Document Information. 
     services.ConfigureSwaggerDocument(options => 
     { 
      //*** Define incremental API version. 
      options.SingleApiVersion(new Info 
      { 
       Version = "v1", 
       Title = "TEST APIs", 
       Description = "Test API Methods", 
       TermsOfService = "", 
      }); 


      //*** Assign the API - Swagger helper document. 
      options.OperationFilter(new Swashbuckle.SwaggerGen.XmlComments.ApplyXmlActionComments(helperDocPath)); 

     }); 

     //*** Configure the Swagger schema settings. 
     services.ConfigureSwaggerSchema(options => 
     { 
      options.DescribeAllEnumsAsStrings = true; 
      options.ModelFilter(new Swashbuckle.SwaggerGen.XmlComments.ApplyXmlTypeComments(helperDocPath)); 
     }); 

     .... 
     .... 
    } 

    //**** Configure Method 

    private void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     ... 
     .... 

     //*** Add Swagger pluggins to application environment. 
     app.UseSwaggerGen(); 
     app.UseSwaggerUi(); 
    } 

код генерирует документацию чванство, а доступ к нему локально, используя локальный -> «http://localhost:8080/testapiproject/swagger/ui/index.html».

Однако после развертывания код на сервере развертывания я все еще получаю документ чванства, но я получаю «Ошибка» в нижней части, при нажатии он говорит,

{"schemaValidationMessages":[{"level":"error","message":"Can't read from file http://<applicationdomainname>:8080//testapiproject/swagger/v1/swagger.json"}]}. 
+0

'http: //: 8080 // testapiproject/swagger/v1/swagger.json' этот путь кажется неправильным. 'hostname' отсутствует. Вы пытаетесь получить json из неправильного домена. – Venky

+0

Все, кроме локального хоста, отображается ошибка в нижней части, которая является ошибкой проверки схемы. – JAK

ответ

5

Я думаю, что он пытается доступ json данные с неправильного пути. Убедитесь, что путь правильно настроен в testapiproject/swagger/ui/index.html" из swaggerui

$(function() { 
     var url = window.location.search.match(/url=([^&]+)/); 
     if (url && url.length > 1) { 
      url = decodeURIComponent(url[1]); 
     } else { 
      url = "/swagger/docs/v1";  // Make sure it's not hardcoded 
     } 
} 

Обновлено для .Net Ядра

я установил только "Swashbuckle": "6.0.0-beta902" пакет.

public void ConfigureServices(IServiceCollection services) 
{ 
      services.AddSwaggerGen(); 
      services.ConfigureSwaggerGen(options => 
      { 
       options.SingleApiVersion(new Info 
       { 
        Version = "v1", 
        Title = "test API", 
        Description = "test api for swagger", 
        TermsOfService = "None", 

       }); 
       options.IncludeXmlComments(/* whatever tha path */); 
       options.DescribeAllEnumsAsStrings(); 
      }); 

    } 

В configurre mehod добавлен только

  app.UseSwagger(); 
      app.UseSwaggerUi(); // inside this method we can pass the root path of swagger 

Он работал с локальным, но не в vitural каталога. Поэтому мне пришлось добавить приведенную ниже конфигурацию в web.config, после чего она начала работать.

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
+1

Я не могу это сделать, поскольку я использую интеграцию swagger для проекта ASP.NET Core RC1 webapi. В RC1 вы не можете найти index.html. – JAK

+0

такой же выпуск как @JAK. Это виртуальный –

1

Swager генерирует документы API из комментариев кода, хранящихся в xml-файлах. Например, комментарии для GatewayServer.dll будут храниться в файле GatewayServer.xml. Вам необходимо загрузить его на сервер развертывания.

Смежные вопросы