Файлы, недоступные на сервере для отправки клиенту - PullRequest
0 голосов
/ 11 октября 2019

У меня странная проблема в ASPNET Core Web API:

API проверяет шаблон Excel, чтобы позволить пользователю заполнить данные и загрузить их в систему. Этот шаблон Excel находится внутри проекта, а доступ к файлу управляется файлом ресурсов (resx), поскольку в зависимости от культуры существуют разные файлы

Локально, как и в известной теме, работает без проблемоднако после развертывания этот шаблон загрузки завершается сбоем, ошибка в журналах выглядит следующим образом:

ИСКЛЮЧИТЕЛЬНОЕ СООБЩЕНИЕ: Невозможно привести объект типа 'System.String' к типу 'System. Байт[]'.

Вот как файл управляется в csproj:

<ItemGroup>
    <None Remove="Resources\Templates\ImportTemplate-fr-FR.xlsx" />
    <None Remove="Resources\Templates\ImportTemplate.xlsx" />
</ItemGroup>

<ItemGroup>
    <EmbeddedResource Include="Resources\Templates\ImportTemplate-fr-FR.xlsx" />
    <EmbeddedResource Include="Resources\Templates\ImportTemplate.xlsx" />
</ItemGroup>

Вот как файл извлекается файлом resx:

_documentExcelImportService.GetTemplate(Resources.ImportExcelTemplate);

Я такжепробовал с «Копировать всегда», с тем же результатом

Как примечание, мы разворачиваем приложение на локальный сервер, а также на Azure AppService

Есть идеи?

Заранее спасибо

ОБНОВЛЕНИЕ A (вопрос yolo sora):

GetTemplate Получает байтовый массив напрямую и инкапсулирует больше информации в DTO, результат -автоматически управляя этим:

public Document GetTemplate(byte[] resourceByteArray)
{            
    return new Document
    {
        FileName = GetFullFileName(),
        FileBlob = resourceByteArray,
        CreationDate = DateTime.Now,
    };
}

ОБНОВЛЕНИЕ B

После тщательной проверки журнала я могу обнаружить, что при попытке доступа к файлу ресурсов (resx), идет по физическому пути, который был создан на сервере агента Azure, где его скомпилировал конвейер. Это довольно странно, но, как только я увидел, я попытался опубликовать вручную, и с этой ручной сборкой все работает!

Похоже, проблема в том, как управлять файлами ресурсов или ссылками ...

Идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...