Search code examples
c#swaggerasp.net-core-2.1.net-core-2.1

swagger.json paths and definitions are empty. No operations defined in spec


I am developing a .netcore web application. I am using of swagger and I've made all the necessary adjustments. Unfortunately it does not work and I just see No operations defined in spec! in the swagger output page.

The swagger file with /swagger/v1/swagger.json has the following content:

{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "Something"
  },
  "paths": {},
  "definitions": {}
}

I want to see my controllers and their actions in swagger output page.


Solution

  • after some research i was found that my problem was about using swagger along with OData in .NetCore2.1. i found a solution for this problem.

    first i added two following Nuget packages:

    Swashbuckle.AspNetCore
    Swashbuckle.AspNetCore.Annotations
    

    then, i added following codes in Startup.cs

    services.AddMvc(options => {
                    foreach (var outputFormatter in 
    options.OutputFormatters.OfType<ODataOutputFormatter>().Where(_ => 
    _.SupportedMediaTypes.Count == 0))
                    {
                        outputFormatter.SupportedMediaTypes.Add(new 
    MediaTypeHeaderValue("application/prs.odatatestxx-odata"));
                    }
                    foreach (var inputFormatter in 
    options.InputFormatters.OfType<ODataInputFormatter>().Where(_ => 
    _.SupportedMediaTypes.Count == 0))
                    {
                        inputFormatter.SupportedMediaTypes.Add(new 
    MediaTypeHeaderValue("application/prs.odatatestxx-odata"));
                    }
                }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    

    the, i added following code line in controllers:

    [ApiExplorerSettings(IgnoreApi = false)] 
    

    please note that it was worked for me but it may be need more research for eventually side effects