NIDHIN.C Ответов: 2

Процесс. начать не работать в IIS для печати из веб-приложения?


Всем Привет,

У меня есть кнопка печати в моей веб-форме, которая отправит Label.txt файл на принтер. Для этого я создаю процесс и задаю свойства, как показано ниже.


Это прекрасно работает в моем локальном компьютере, но когда я размещаю его на IIS, он показывает ошибку типа,

No application is associated with the specified file for this operation

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ComponentModel.Win32Exception: No application is associated with the specified file for this operation

Source Error: 


Line 350:            Process p = new Process();
Line 351:            p.StartInfo = info;
Line 352:            p.Start();
Line 353:            if (!p.HasExited)
Line 354:               p.WaitForInputIdle();

can anyone help? any other way to print data for my requirement?
thanks in advance.

What I have tried:

<pre>ProcessStartInfo info = new ProcessStartInfo();
            if (prName != "")
            {
                info.Arguments = "\"" + prName + "\"";
            }
            info.Verb = "PrintTo";
            info.FileName = Server.MapPath("~/Label.txt");
            info.CreateNoWindow = true;
            info.WindowStyle = ProcessWindowStyle.Hidden;


            Process p = new Process();
            p.StartInfo = info;
            p.Start();
            if (!p.HasExited)
               p.WaitForInputIdle();
            System.Threading.Thread.Sleep(3000);
            try
            {
                if (false == p.CloseMainWindow())
                    p.Kill();
            }
            catch (Exception ex) { }

F-ES Sitecore

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

2 Ответов

Рейтинг:
0

Kornfeld Eliyahu Peter

Даже если вы не скажете нам, какой файл вы хотите распечатать, довольно ясно, что происходит, основываясь на сообщении об ошибке...

Цитата:
Ни одно приложение не связано с указанным файлом для этой операции
Вы пытаетесь распечатать файл, с которым не связано ни одно приложение...
например, если у вас не было Word (или другого приложения для обработки текстов, установленного на вашем сервере) и вы попытаетесь распечатать файл DOCX, вы потерпите неудачу, так как ни одно приложение не связано с этим типом, и ОС не знает, как с ним обращаться...


NIDHIN.C

информация.Имя Файла = Сервер.MapPath ("~/Label.txt");
Я пытаюсь распечатать текстовый файл. Label.txt который находится в корневой папке моего решения.

Рейтинг:
0

Richard Deeming

Ваш код работает на сервере Даже если бы это сработало, он напечатал бы файл на принтере по умолчанию, подключенном к серверу.

Это могло бы быть появился для работы при отладке в Visual Studio. Но это только потому, что в данном конкретном случае клиент и сервер были одним и тем же компьютером.

Единственный способ напечатать что-то на принтере пользователя - это использовать Javascript метод window. print() [^]. Вам нужно будет отобразить содержимое текстового файла на странице, зарегистрировать скрипт для вызова window.print(), и использовать Стили печати CSS[^] для управления тем, что появляется в печатной продукции.