0

我有一个 Windows 服务,它通过带有 URL 的 ShDocVw 对象 (IE8) 调用网页。然后它检查页面,如果它得到某个结果,它会读取数据然后返回结果。

当我在调试中运行它并作为我的普通域用户时,一切都很顺利。当我将它作为 Windows 服务作为普通域用户运行时,它给了我一个完全不同的网页。我已经检查了网页中的调用 URL 和响应 URL,在调试或生产中,它们完全一样!奇怪的是,在调试中发回的网页与在生产中发回的网页不同。调试中的那个为我提供了我正在寻找的信息,但生产版本(作为 Windows 服务运行)响应错误。

原始 URL 似乎正在重定向到另一个网页,这就是我使用 ShDocVw 和 IE 进行该过程的原因(除非有人另有说明)。我确实尝试过使用不同的对象,但我不记得那是什么了。

真正奇怪的是,该过程完美地适用于调试和 Windows 服务中的 3 个不同 URL,但第四个 URL 不同,它返回的网页(但具有相同的 URL)!

代码类似于:

        InternetExplorer objIE = new InternetExplorer();
        objIE.Navigate(sService, ref objEmpty, ref objEmpty, ref objEmpty, ref objEmpty);
        while (objIE.Busy || (objIE.ReadyState.ToString() != "READYSTATE_COMPLETE"))
        {
            System.Threading.Thread.Sleep(1000);
            if (i == I_TIMEOUT)
            {
                break;
            }
            i++;
        }
        mshtml.HTMLDocument objDocument = (mshtml.HTMLDocument)objIE.Document;

有谁知道如何找出问题所在或知道我可能做错了什么?

4

1 回答 1

0

问题的答案是运行 Windows 服务的 USER 从未登录过,因此它没有 IE 配置文件。一旦我以用户身份登录计算机并启动并关闭 IE,Windows 服务就会开始工作,然后正确的请求会导致对先前错误请求的正确响应。

感谢您的回答。

于 2013-09-10T10:46:41.183 回答