IIS マシンにデプロイされた WCF サービスを介してサーバー側からファイルを印刷しようとしています。次のコードは、Win 2oo3 マシンで完全に機能します。しかし、同じコードが COM 例外をスローしています。これについてのアイデア。いくつかの権限に関連していると思います。ここにコードがあります
public void Print(string htmlFilename, string printer, short copies)
{
string currDefault = string.Empty;
try
{
currDefault = GetDefaultPrinter();
myPrinters.SetDefaultPrinter(printer);
for (int i = 0; i < copies; i++)
{
documentLoaded = false;
documentPrinted = false;
InternetExplorer ie = new InternetExplorer ();
ie.DocumentComplete += new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete);
ie.PrintTemplateTeardown += new SHDocVw.DWebBrowserEvents2_PrintTemplateTeardownEventHandler(ie_PrintTemplateTeardown);
object missing = Missing.Value;
ie.Navigate(htmlFilename, ref missing, ref missing, ref missing, ref missing);
while (!documentLoaded && ie.QueryStatusWB(SHDocVw.OLECMDID.OLECMDID_PRINT) != SHDocVw.OLECMDF.OLECMDF_ENABLED)
Thread.Sleep(100);
ie.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINTPREVIEW, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref missing, ref missing);
ie.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINT, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref missing, ref missing);
while (!documentPrinted)
Thread.Sleep(100);
ie.DocumentComplete -= ie_DocumentComplete;
ie.PrintTemplateTeardown -= ie_PrintTemplateTeardown;
ie.Quit();
}
}
catch { throw; }
finally
{
myPrinters.SetDefaultPrinter(currDefault);
}
}
そして、Com Exception は、internetexplorer のオブジェクトを作成しているときに正確に次のようになります。
[エラー ログ] CLSID {0002DF01-0000-0000-C000-000000000046} を持つコンポーネントの COM クラス ファクトリの取得に失敗しました。: System.RuntimeTypeHandle.CreateInstance(RuntimeType タイプ、Boolean publicOnly、Boolean noCheck、Boolean& canBeCached、RuntimeMethodHandleInternal& ctor、Boolean& bNeedSecurityCheck) で System.RuntimeType.CreateInstanceSlow(Boolean publicOnly、Boolean skipCheckThis、Boolean fillCache) で System.RuntimeType.CreateInstanceDefaultCtor(Boolean) publicOnly、Boolean skipVisibilityChecks、Boolean skipCheckThis、Boolean fillCache) の System.Activator.CreateInstance(Type タイプ、Boolean nonPublic) at System.Activator.CreateInstance(Type タイプ) [/ERRORLOG]
さらに、InternetExplorerMedium としてオブジェクトを作成しようとすると。その後、2008年には機能しましたが、Winサーバー2003では機能しませんでした。
よろしく、パバンN