APR Printer Access Error

I’m using APR to route to a server printer, but I’m receiving the below error message.
I can print manually to that server printer from the user that’s using the routing.
What am I missing?

     Program Ice.Services.Lib.RunTask raised an unexpected exception with the following message: RunTask: Settings to access printer '\\isimke\Accounting' are not valid.
     Stack Trace:
        at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal(String printer)
        at System.Drawing.Printing.PrinterSettings.GetHdevmode(PageSettings pageSettings)
        at PdfPrintingNet.PdfPrint.Print(String fileName, String password)
        at PdfPrintingNet.PdfPrint.Print(Byte[] pdfArray, String printerJobName)
        at Ice.Core.SsrsReporting.PdfReportPrinter.Print(Byte[] reportBytes, String printerNameParameter, String reportDescription, EpiPrinterSettings printerSettings, EpiPageSettings pageSettings) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\SsrsReporting\PdfReportPrinter.cs:line 32
        at Ice.Core.RoutingAndBreaking.ServerPrintReportAction.PrintReport(ReportInstanceInformation reportInstance, RenderedSsrsReport renderedReport) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\ServerPrintReportAction.cs:line 152
        at Ice.Core.RoutingAndBreaking.ReportPersister.Persist(ReportInstanceInformation reportInstance, Func`2 reportsRenderer, Action`1 fillSysRptLstRow, Action`2 processReport) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\ReportPersister.cs:line 47
        at Ice.Core.RoutingAndBreaking.ReportPersister.Persist(IEnumerable`1 reportInstances, Func`2 reportsRenderer, Action`2 fillSysRptLstRow, Action`2 processReport) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\ReportPersister.cs:line 28
        at Ice.Core.RoutingAndBreaking.ServerPrintReportAction.PrintReports(IEnumerable`1 reportsToRender) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\ServerPrintReportAction.cs:line 142
        at Ice.Core.RoutingAndBreaking.ServerPrintReportAction.PrintReportsFromReportRequests() in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\ServerPrintReportAction.cs:line 138
        at Ice.Core.RoutingAndBreaking.ServerPrintReportAction.HandleProcess(Object sender, ProcessEventArgs e) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\ServerPrintReportAction.cs:line 73
        at Ice.Core.RoutingAndBreaking.BaseNode.OnProcess(ProcessEventArgs e) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\BaseNode.cs:line 172
        at Ice.Core.RoutingAndBreaking.BaseNode.OnProcess(ProcessEventArgs e) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\BaseNode.cs:line 172
        at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
        at Ice.Core.RoutingAndBreaking.BaseNode.OnProcess(ProcessEventArgs e) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\BaseNode.cs:line 172
        at Ice.Core.RoutingAndBreaking.BaseNode.OnProcess(ProcessEventArgs e) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\BaseNode.cs:line 172
        at Ice.Core.RoutingAndBreaking.Workflow.OnProcess(ProcessEventArgs e) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\Workflow.cs:line 203
        at Ice.Core.RoutingAndBreaking.Workflow.Run(ReportInstanceInformation reportInstance) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RoutingAndBreaking\Workflow.cs:line 150
        at Ice.Core.RptBase.ReportSsrsDatabaseBuilder`1.RouteAndBreakReport(Func`2 executeCommand, Func`2 executeReader, SqlObjectsCreated sqlObjectsCreated) in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RptBase\ReportSsrsDatabaseBuilder.cs:line 254
        at Ice.Core.RptBase.ReportDatabaseBuilder`1.XMLClose() in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RptBase\ReportDatabaseBuilder.cs:line 142
        at Ice.Core.RptTaskBase`1.XMLClose() in C:\_Releases\ICE\3.1.500.16\Source\Server\Internal\Lib\TaskLib\RptBase\RptTaskBase.cs:line 130
        at Erp.Internal.AR.ARInvForm.RunProcess(Int64 instanceTaskNum, String outputFileName) in C:\_Releases\ERP\UD10.1.500.16\Source\Server\Internal\AR\ARInvForm\ARInvForm.cs:line 1227
        at Ice.Hosting.TaskCaller.InnerExecuteTask(IceDataContext newContext) in C:\_Releases\ICE\3.1.500.16\Source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 93
        at Ice.Hosting.TaskCaller.ExecuteTask() in C:\_Releases\ICE\3.1.500.16\Source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 54
        at Ice.Lib.RunTask.BpmFriendlyTaskLauncher.Run(String sessionIdPrefix, IceContext db, Action taskRunner) in C:\_Releases\ICE\3.1.500.16\Source\Server\Services\Lib\RunTask\BpmFriendlyTaskLauncher.cs:line 63
        at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in C:\_Releases\ICE\3.1.500.16\Source\Server\Services\Lib\RunTask\RunTask.cs:line 526
        at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in C:\_Releases\ICE\3.1.500.16\Source\Server\Services\Lib\RunTask\RunTask.cs:line 526
        at Ice.Services.Lib.RunTaskSvcFacade.RunTask(Int64 ipTaskNum) in C:\_Releases\ICE\3.1.500.16\Source\Server\Services\Lib\RunTask\RunTaskSvcFacade.cs:line 87
        at SyncInvokeRunTask(Object , Object[] , Object[] )
        at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
        at Epicor.Hosting.OperationBoundInvoker.InnerInvoke(Object instance, Func`2 func) in C:\_Releases\ICE\3.1.500.16\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59
        at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func`2 func) in C:\_Releases\ICE\3.1.500.16\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 28
        at Epicor.Hosting.Wcf.EpiOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) in C:\_Releases\ICE\3.1.500.16\Source\Framework\Epicor.System\Hosting\Wcf\EpiOperationInvoker.cs:line 23
        at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
        at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
        at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
        at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
        at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext)
        at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)
        at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result)
        at System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult result)
        at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
        at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
        at System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(IAsyncResult result)
        at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
        at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
        at System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete(Object state)
        at System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(Object state)
        at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
        at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
        at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
        at System.Net.Security.NegotiateStream.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
        at System.Net.Security.NegotiateStream.ReadCallback(AsyncProtocolRequest asyncRequest)
        at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result)
        at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes)
        at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult)
        at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
        at System.ServiceModel.Channels.ConnectionStream.IOAsyncResult.OnAsyncIOComplete(Object state)
        at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e)
        at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags)
        at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
        at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

Are you following all of the guidelines listed in the
GUIDELINES TO IMPLEMENTING SERVER-SIDE PRINTING IN YOUR ENVIRONMENT:
section of this article?

Specifically, has this printer been installed on every Windows server that has anything to do with appserver/taskagent processing under the Windows user that is on the application pool identity?

1 Like

Nathan–I’ll give this a shot. Thanks for the info and I’m not sure how I missed that post when I searched the original error. I must have had a filter on accidentally. The routing now works on the individual tests I did on my local machine as well as the server. Let’s hope the BPM I have works! :+1:t2: