В настоящее время я обновляюсь до .NET 8 (также перехожу на изолированный рабочий процесс).
У меня есть реализация SwaggerUI на основе https://devkimchi.com/2019/02/02/introducing-swagger-ui-on-azure-functions/
У меня есть такой контроллер:
public static class SwaggerUiController
{
[Function("SwaggerUiController")]
public static async Task<IActionResult> RenderSwaggerUI(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "openapi/swaggerui")]
HttpRequestData req, ILogger log)
{
const string title = "My title 1";
const string endpoint = "openapi/openapi.yaml";
return await ConfigureSwaggerUI(req, title, endpoint);
}...
С еще двумя функциями, которые обслуживают два разных маршрута (и имеют другие конечные точки).
В моем ConfigureSwaggerUI у меня есть:
private static async Task<ContentResult> ConfigureSwaggerUI(HttpRequestData req, string title, string endpoint)
{
var swaggerUi = new SwaggerUI();
var openApiInfo = CreateOpenApiInfo(title);
var routePrefix = req.Url.Host.Contains("localhost") ? "api" : "doc";
// req.Host = new HostString(Environment.GetEnvironmentVariable("MyApiEnvVariable") ?? "localhost:7071");
var httpRequestObject = new HttpRequestObject(req);
var assembly = typeof(SwaggerUI).Assembly;
var result =
await swaggerUi
.AddMetadata(openApiInfo)
.AddServer(httpRequestObject, routePrefix)
.BuildAsync(assembly)
.RenderAsync(endpoint)
.ConfigureAwait(false);
return CreateContentResult(result);
}
При обновлении мне пришлось изменить HttpRequest на HttpRequestData, что мешает мне установить Host в соответствии с прокомментированной строкой.
// req.Host = new HostString(Environment.GetEnvironmentVariable("MyApiEnvVariable") ?? "localhost:7071");
Как мне сохранить функциональность SwaggerUI при обновлении до .NET 8?





Следующее должно добавить к запросу заголовок хоста.
httpRequestData.Headers.Add("Host", $"{Environment.GetEnvironmentVariable("MyApiEnvVariable") ?? "localhost:7071"}");
Да, так и есть. Или, поскольку это словарь, вы можете просто httpRequestData.Headers["Host"] = // заголовок моего хоста
Это вызовет ошибку «Невозможно добавить значение, поскольку заголовок «Хост» не поддерживает несколько значений». Можно ли удалить его раньше и добавить?