我正在使用.net framwork 4.0开发一个c#web服务 并且我有一个执行打印的文件(print.exe),当我手动双击它时文件工作,它打印,但是当使用webservice时,它会给出一个错误,即没有安装打印机。
这是webmethod的代码:
[WebMethod]
public String Print_In_Kitchen(Int32 OrderID, String Lang)
{
System.Security.SecureString secPass = new System.Security.SecureString();
string paswd = "96321";
for (int i = 0; i < paswd.Length; i++)
{
secPass.AppendChar(paswd[i]);
}
Process proc = new Process();
proc.StartInfo.FileName = @"C:\EXE_Print.exe";
proc.StartInfo.Arguments = @"" + OrderID + " " + Lang + " " + "\"" + ConfigurationManager.ConnectionStrings["constr"].ConnectionString + "\"";
proc.StartInfo.UserName = "omar";
proc.StartInfo.Password = secPass;
proc.StartInfo.Domain = "Futec";
proc.StartInfo.Verb = "runas";
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.Verb = "runas";
proc.StartInfo.RedirectStandardInput = true;
proc.Start();
string s = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
return s;
}
我搜索了一个解决方案,但没有找到任何有用的链接或解释,在这里看到了这个问题,但没有回答:pdf print through .net process 我是.NET的新手
答案 0 :(得分:1)
我的直觉是服务正在运行的用户无法访问该打印机。
您可以尝试将StartInfo.UseShellExecute
更改为true
,但我也会检查您的服务用户的权限。