Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dymo SDK找不到打印机_C#_.net_Printing_Network Printers_Dymo - Fatal编程技术网

C# Dymo SDK找不到打印机

C# Dymo SDK找不到打印机,c#,.net,printing,network-printers,dymo,C#,.net,Printing,Network Printers,Dymo,我已经安装了DYMO_Label_v.8_SDK_Installer.exe和默认的v8.x标签打印软件。代码在我的计算机上运行良好,但当我将其发布到iis服务器时,它会给我以下消息: <Error> <Message>An error has occurred.</Message> <ExceptionMessage>Printer '\\pcname\DYMO' is not found</ExceptionMessage>

我已经安装了
DYMO_Label_v.8_SDK_Installer.exe
和默认的v8.x标签打印软件。代码在我的计算机上运行良好,但当我将其发布到iis服务器时,它会给我以下消息:

<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>
现在我已经阅读了一些关于32位和64位版本sdk的内容,但这会给我一个不同的错误,对吗?本地测试也在x64机器上进行。没有iis,但我想是iisexpress或developmentserver。我下载的sdk是我认为最新的,根据dymo博客,它应该适用于x86和x64机器

编辑此代码未列出任何打印机。但是dymo软件可以打印(从同一台pc)。当我在windows控制面板中查看打印机时,会列出labelprinter

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的.NET4而不是4.5上测试了它,它没有列出任何打印机。 因此,2003年和2012年都不起作用。Windows 8.1确实有效。相同的代码,相同的网络共享打印机。dymo label v8软件可以从2003、2012和8.1开始打印。因此,打印机安装正确。我还尝试在2003年的web.config中模拟以管理员身份运行。但这并不奏效。 当我在下面的屏幕截图中运行此命令并将打印机名称复制粘贴到web.config文件时,它仍然找不到已安装的打印机


我花了一些时间,但问题是IIS。(在win2k3上使用.net 4在iis6中测试,在win2012上使用.net 4.5在iis8中测试)

长话短说:我使用了katana项目;.net的owin来承载rest服务

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...