2010-04-12 31 views
0

这很奇怪。我在C#中编写了一个窗体工具来返回默认的IE代理。它有效(请参阅下面的代码片段)。我创建了一个服务来使用相同的代码返回代理,它在我进入调试器时起作用,但是当服务作为二进制代码运行时它不起作用。这必须是某种我不能重新创建的权限或上下文。此外,如果我从Windows服务调用该工具,它仍然不会返回代理信息....这似乎与服务无关。我没有在事件日志中看到任何许可错误,就好像一个服务与普通的Windows窗体exe有完全不同的上下文。C#IE代理检测不能从Windows服务工作

我tride两个:

WebRequest.GetSystemWebProxy() 

Uri requestUri = new Uri(urlOfDomain); 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); 
IWebProxy proxy = request.Proxy; 

if (!proxy.IsBypassed(requestUri)){ 
    Uri uri2 = proxy.GetProxy(request.RequestUri); 
} 

感谢您的帮助!

+0

您的服务在部署时是否由其他用户运行? – Joey 2010-04-12 22:36:04

回答

0

This article已过时,但仍与Windows服务相关,尽管它不包括IE代理设置。这些设置取决于用户,因此您的问题的答案与服务的用户上下文有关。如果该服务以本地系统运行,则它将不具有与您自己的用户帐户相同的IE设置。

+0

它作为“本地系统帐户”和“允许服务与桌面交互”运行。所以推理听起来是正确的。明天我必须恢复测试。 – mytwocents 2010-04-12 22:45:55

+0

奇怪的是为什么在调试时运行用户? – mytwocents 2010-04-13 20:42:23

+0

您是否已附加到调试服务或您是否在Main中编写代码以在调试时不作为服务运行?在第二种情况下,您正在自己的环境中运行。 – Timores 2010-04-13 22:33:41