binu.emiliya Ответов: 2

Печать текстовых файлов работает с сервера разработки, но не работает с IIS


Дорогие Все,

Я хочу распечатать штрих-коды из asp.net применение.Я использую принтер Zebra и создал текстовые файлы из своего приложения ниже приведен код для создания текстового файла
Using dr As SqlDataReader = cmd.ExecuteReader()

              Using StringWriter
                  StringWriter.WriteLine("CT~~CD,~CC^~CT~")
                  StringWriter.WriteLine("^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR2,2~SD15^JUS^LRN^CI0^XZ")
                  While dr.Read()
                      Dim linex As String = "^FD>;" & dr.Item("BARCODEVALUE") & "^FS"
                      StringWriter.WriteLine("^XA")
                      StringWriter.WriteLine("^MMT")
                      StringWriter.WriteLine("^PW406")
                      StringWriter.WriteLine("^LL0203")
                      StringWriter.WriteLine("^LS0")
                      StringWriter.WriteLine("^BY3,3,82^FT51,113^BCN,,Y,N")
                      StringWriter.WriteLine(linex)
                      StringWriter.WriteLine("^PQ1,0,1,Y^XZ")
                  End While
              End Using
          End Using

Это работает нормально, если я набираю текст из командной строки dos
Тип filename.txt >prn

Теперь я создал функцию для печати, как показано ниже
Dim proc As New System.Diagnostics.Process
        With proc.StartInfo
            .FileName = "cmd.exe"
            .Arguments = _shellcmd
        End With

        proc.Start()

где _shellCmd-это команда для вызова dos-печати
Dim shellcommand As String = "/C copy " & barcodefile + " lpt1"

это все работает с dev сервера,но после публикации, когда я нажимаю кнопку, ничего не происходит.Я опубликовал сайт в той же системе, где установлен принтер, и добавил пользователей Defaultpool к принтеру и дал разрешение на печать, но по-прежнему ничего не происходит.Пожалуйста помочь

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

Создал текстовый файл штрих-кода и напечатал его из asp.net приложение, которое находится в стадии разработки

2 Ответов

Рейтинг:
2

OriginalGriff

Мы не можем точно сказать, но есть пара вещей, на которые вы можете посмотреть.
1) код VB выполняется на сервере, а не на клиенте - я предполагаю, что принтер установлен на сервере, потому что вы не можете получить доступ к клиентским компьютерам из VB.
2) на сервере сайт работает как часть IIS, который не работает под "обычной" учетной записью пользователя - он обычно работает под учетной записью сетевых служб, поэтому вам нужно будет убедиться, что папка, содержащая ваш файл печати, доступна для него и драйвера принтера - я бы рекомендовал использовать определенную папку, которая читается-записывается для всех пользователей (это почти наверняка не относится к папкам веб-сайтов IIS)
3) Если он работает, когда вы набираете его на prn тогда почему вы используете другой порт для печати - lpt - меняйте одну переменную за раз, а не несколько!


Рейтинг:
1

Richard Deeming

Вместо того чтобы выполнять команду DOS, вы можете использовать код для отправки ZPL непосредственно на принтер. Вот класс, который я использую для этого:
Сырье и вспомогательные принтер · на GitHub[^]

Он написан на языке C#, но вы можете либо преобразовать его, либо скомпилировать в библиотеку и вызвать из вашего компьютера. VB.NET код.

RawPrinterHelper.SendStringToPrinter("Name of the printer to use", zplStringToPrint, "My barcode")

Как сказал Грифф, этот код выполняется на сервере, поэтому вам нужно будет убедиться, что принтер ZPL установлен на сервере и доступен для учетной записи IIS.