Я пытаюсь реализовать 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
, а неавторизованные запросы не указывают на то, что они не авторизованы