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>
そして奇妙なことは、私が追加したことであり、\\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
SDK の 32 ビット バージョンと 64 ビット バージョンについて読んだことがありますが、別のエラーが発生するのでしょうか? ローカル テストも 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 は、4.5 ではなく .net 4 の win2003 でテストしたところ、プリンターが一覧表示されません。したがって、2003 年と 2012 年はどちらも機能しません。Windows 8.1 は動作します。同じコード、同じネットワーク共有プリンター。dymo label v8 ソフトウェアは、2003、2012、8.1 から印刷できます。プリンタが正しくインストールされていることを確認してください。また、2003年にweb.configで偽装して管理者として実行しようとしました。しかし、それはうまくいきませんでした。以下のスクリーンショットでこのコマンドを実行し、プリンター名をコピーして web.config ファイルに貼り付けても、インストールされているプリンターを見つけることができません。