System.drawing.common инициализатор типа для 'gdip' вызвал исключениеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 System.drawing.common инициализатор типа для 'gdip' вызвал исключение

Сообщение Anonymous »

Это мой код для добавления изображения на лист. Я получаю изображение в виде байта из базы данных. Версия платформы .Net Core — 2.2.104. Это проект API. В моем регионе код работает хорошо. Я использую компонент ClosedXML версии 0.95.4, как показано ниже.

Код: Выделить всё

[HttpPost("GetTowel")]
public IActionResult GetTowel()
{
string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
string fileName = "Towel Quotation.xlsx";
try
{
using (var workbook = new XLWorkbook())
{
IXLWorksheet worksheet = workbook.Worksheets.Add("Towel Quotation");

byte[] bytes = _fileService.Get(159).FileInBytes;
System.IO.Stream x = new System.IO.MemoryStream(bytes);

//the exception is throwed at this line:
**var image = worksheet.AddPicture(x).MoveTo(worksheet.Cell("P1")).Scale(1.0);**

using (var stream = new MemoryStream())
{
workbook.SaveAs(stream);
var content = stream.ToArray();
return File(content, contentType, fileName);
}
}
}
catch (Exception ex)
{
return BadRequest(ErrorResultFormatter.PrepareErrorResult("",ex.Message));
}
}
Изображение

Мой Kubernetes информация о сервере приведена ниже:

Код: Выделить всё

System.drawing.common the type initializer for 'gdip' threw an exception

Код: Выделить всё

*FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build WORKDIR /app
COPY *.csproj Nuget.Config ./ RUN dotnet restore /property:Configuration=Release
--configfile=Nuget.Config --no-cache --force
COPY . ./temp/ WORKDIR /app/temp RUN dotnet publish -c Release -o out FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime ENV ASPNETCORE_URLS="http://+" ENV ASPNETCORE_Kestrel__Certificates__Default__Password="*****" WORKDIR /app COPY --from=build /app/temp/out ./ ENTRYPOINT ["dotnet", "blahblah.dll"]*
На стороне сервера я получаю следующее исключение: «system.drawing.common инициализатор типа для 'gdip' выдал исключение»
Я много раз искал в Google. Обычно рекомендуется добавлять файл Docker таким способом:

Код: Выделить всё

RUN apt-get install libgdiplus
Но этот способ также не решил мою проблему. Кто-нибудь может мне помочь?
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/670 ... -exception
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»