Member 11971472 Ответов: 1

Экран System.windows.forms выдает ошибку в webserver


Я создал веб-сайт, который печатает скриншот. При локальном запуске все работает нормально.

Я также ссылался на систему.Окна.Формы, но когда я публикую сайт, я получаю эту ошибку. Должно быть, я что-то упустил на веб-сервере?

 Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0234: The type or namespace name 'Screen' does not exist in the namespace 'System.Windows.Forms' (are you missing an assembly reference?)

Source Error:


Line 637:        //bmpScreenShot.Save("test.jpg", ImageFormat.Jpeg);
Line 638:
Line 639:        Bitmap printscreen = new Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Line 640:
Line 641:        Graphics graphics = Graphics.FromImage(printscreen as System.Drawing.Image);


Что я уже пробовал:

Погуглил и убедился в системе.Окна.На формы ссылаются.

Manish Sahu

не могли бы вы прислать еще часть кода

Member 11971472

частный пустой печатный экран()

{
Bitmap printscreen = новое растровое изображение(System.Окна.Формы.Экран.Первичный экран.Границы.Ширина, Экран.Первичный экран.Границы.Высота);
Графика графика = графика.FromImage(printscreen как система.Рисование.Изображение);
графика.CopyFromScreen(0, 0, 0, 0, printscreen.Size);
печатный экран.Сохранить(@"C:\Temp\printscreen.jpg", ImageFormat.Jpeg);

использование (var pd = new PrintDialog())
{
др.Свойство printersettings.Имя_принтера = "вы не возражаете, пройдемте-FARVE";

var info = новая система.Диагностика.Изменение панели()
{
Verb = "print",
Имя Файла = @"C:\Temp\printscreen.jpg",
};
Процесс.Старт(информация);
}
}

1 Ответов

Рейтинг:
6

F-ES Sitecore

Ваш код работает на сервере, поэтому вы получаете скриншот сервера, а не клиента. Он работал локально только потому, что веб-сервер и клиент-это одна и та же машина, и ваш сервер, вероятно, работал от имени локального пользователя. Когда вы развертываете этот код на реальном сервере, он, вероятно, не будет работать, так как у него нет доступа к интерактивному рабочему столу, и даже если бы он действительно работал, как я уже сказал, Это был бы моментальный снимок сервера, а не клиента. Это не является причиной вашей фактической ошибки, но ваша фактическая ошибка не стоит исправления по вышеуказанным причинам.

Google how to get a screen shot of the client as the method you are using isn't going to work. Любой метод, который действительно работает, вероятно, будет включать в себя какой-то клиентский плагин, маловероятно, что вы можете сделать это из коробки по соображениям безопасности.