Невозможно реализовать swagger в проекте web.mvc - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь реализовать swagger в проекте Web.Mvc.

Следуя найденным шагам здесь

Сначала я скопировал и вставил код, найденный в Web.Host проект Startup.cs файл

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    ...
    //Swagger - Enable this line and the related lines in Configure method to enable swagger UI
    services.AddSwaggerGen(options =>
    {
        options.SwaggerDoc("v1", new Info { Title = "MySite API", Version = "v1" });
        options.DocInclusionPredicate((docName, description) => true);

        //Note: This is just for showing Authorize button on the UI. 
        //Authorize button's behaviour is handled in wwwroot/swagger/ui/index.html
        options.AddSecurityDefinition("Bearer", new BasicAuthScheme());
    });
    ...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ...
    // Enable middleware to serve generated Swagger as a JSON endpoint
    app.UseSwagger();

    // Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/swagger/v1/swagger.json", "MySite API V1");
        options.IndexStream = () => Assembly.GetExecutingAssembly().GetManifestResourceStream("MySite.Web.wwwroot.swagger.ui.index.html");
    }); //URL: /swagger
    ...
}

Затем я скопировал wwwroot\swagger из Web.Host в Web.Mvc

Теперь, когда я перехожу к mysite.com/swagger, страница загружается.Все отображается , чтобы работать нормально, пока я не попытаюсь сделать вызовы API.

Когда я запускаю Web.Host и звоню без токена на предъявителя, я получаю следующий ответ

{
  "result": null,
  "targetUrl": null,
  "success": false,
  "error": {
    "code": 0,
    "message": "Current user did not login to the application!",
    "details": null,
    "validationErrors": null
  },
  "unAuthorizedRequest": true,
  "__abp": true
}

и тот же вызов на Web.Mvc я получаю следующий ответ:

{
  "result": {
    "totalCount": 0,
    "items": []
  },
  "targetUrl": null,
  "success": true,
  "error": null,
  "unAuthorizedRequest": false,
  "__abp": true
}

Я ожидаю, что неавторизованный запрос вернет тот же ответ, но это не так.

Другая проблемая с Web.Host я могу войти без проблем, но на Web.Mvc я не могу.Вход возвращает код ошибки 400, и моя точка останова на TokenAuthController.Authenticate никогда не срабатывает (точка останова работает при входе через Web.Host).

Я думаю, что в документации может отсутствовать несколько шагов, потому что я не могу получить токен, когда я звоню на /api/TokenAuth/Authenticate с использованием Web.Mvc, а неавторизованные запросы не указывают на то, что они не авторизованы

...