Web API:网络打印机以调试模式显示,但在通过iisservice运行时不显示

时间:2017-11-16 10:49:52

标签: c# iis asp.net-web-api printing visual-studio-2017

我正在尝试获取所有可用打印机的列表,无论是本地安装还是网络打印机。要做到这一点,我使用了以下代码how to get network printers

我的实施

    [HttpGet]
    [Route("API/GetPrintersTest")]
    public List<string> GetPrinters()
    {
        List<string> list = new List<string>();

        // Use the ObjectQuery to get the list of configured printers
        System.Management.ObjectQuery oquery =
            new System.Management.ObjectQuery("SELECT * FROM Win32_Printer");

        System.Management.ManagementObjectSearcher mosearcher =
            new System.Management.ManagementObjectSearcher(oquery);

        System.Management.ManagementObjectCollection moc = mosearcher.Get();

        foreach (ManagementObject mo in moc)
        {
            System.Management.PropertyDataCollection pdc = mo.Properties;
            foreach (System.Management.PropertyData pd in pdc)
            {
                if ((bool)mo["Network"] || (bool)mo["Local"])
                {
                    if (pd.Name == "Name")
                        list.Add(pd.Name + ": " + mo[pd.Name]);
                }
            }
        }

        return list;
    }

当我从visual studio调试WebAPI时,这非常正常,但是一旦我部署了我的webapi并请求相同的请求,我只能看到本地打印机,而不是网络打印机。

以下是从visual studio以调试模式运行WebAPI的结果。

名称:Microsoft XPS Document Writer
名称:Microsoft打印到PDF
名称:传真
名称:兄弟MFC-J825DW打印机
名称:兄弟HL-5450DN系列打印机
名称:\ sbs2011 \ RICOH_MAGABUR

以下是使用IIS运行已发布的WebAPI的结果。

名称:Microsoft XPS Document Writer
名称:Microsoft打印到PDF
名称:传真
名称:兄弟MFC-J825DW打印机
名称:兄弟HL-5450DN系列打印机

唯一的网络打印机是 \ sbs2011 \ RICOH_MAGABUR

如您所见,列表不同。 我能想到的唯一可能导致这种情况是缺乏对web api的权限。所以我试着用解决方案解决它,但无济于事。 IIS Application pool permissions for web api

这里有什么我想念的吗?我设置权限错误或是否有其他原因导致问题。

提前感谢您的时间和精力。

0 个答案:

没有答案