Я установил DYMO_Label_v.8_SDK_Installer.exe
и программное обеспечение для печати этикеток по умолчанию v8.x. Код прекрасно работает на моей машине, но когда я публикую его на сервер IIS дает мне это сообщение:Dymo SDK не может найти принтер
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>Printer '\\pcname\DYMO' is not found</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace> at System.Web.Http.ApiController.<InvokeActionWithExceptionFilters>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()
</StackTrace>
</Error>
И самое странное, что я добавил \\pcname\DYMO
и может печатать на нем. Когда я просматриваю \ pcname, он показывает мне этот общий принтер dymo
. Все работает, когда я запускаю свой код локально, но когда он развернут с теми же настройками в web.config, он не может найти принтер?
StringBuilder sb = new StringBuilder
var label = DYMO.Label.Framework.Label.Open(System.Web.HttpContext.Current.Server.MapPath(@"~/Content/thelabel.label")); // mvc webapplication
label.SetObjectText("Address", sb.ToString());
label.Print(ConfigurationManager.AppSettings.Get("printername"));
// printername = \\pcname\dymo
Теперь я что-то около 32 и 64 разрядных версий SDK читать, но это дало бы мне другое право ошибки? локальное тестирование также выполняется на машине x64. Нет, я думаю, но iisexpress или developmenterver. И sdk, который я загрузил, является последним, я думаю, который должен работать как для x86, так и для x64 машин в соответствии с блоком dymo.
Редактировать Этот код не отображает ни одного принтера. Но программное обеспечение dymo может печатать (с того же ПК). указатель метки указан, когда я смотрю на принтеры в панели управления Windows.
StringBuilder sbPrinters = new StringBuilder();
DYMO.Label.Framework.Printers p = new DYMO.Label.Framework.Printers();
foreach(var printer in p.ToList())
{
sbPrinters.AppendLine(printer.Name);
sbPrinters.AppendLine(printer.ModelName);
sbPrinters.AppendLine(printer.IsConnected.ToString());
sbPrinters.AppendLine(printer.IsLocal.ToString());
sbPrinters.AppendLine("-==========-");
}
return sbPrinters.ToString(); // empty...
edit2 просто проверял на win2003 на .net 4 вместо 4.5, и это не список всех принтеров. Так что и 2003, и 2012 год не работают. Windows 8.1 работает. Один и тот же общий сетевой принтер. Программное обеспечение dymo label v8 может печатать с 2003, 2012, 8.1. поэтому принтер установлен правильно. Я также попробовал олицетворение в web.config в 2003 году для запуска в качестве администратора. Но это не сработало. Когда я выполнил эту команду на скриншоте ниже и скопировал вставку имени принтера в файл web.config, он все еще не может найти установленный принтер.