2009-10-28 192 views
0

我们编写了一个Windows服务,需要发送HTTP请求才能将一些xml数据发布到另一台服务器。当我们通过一个控制台应用程序测试代码,它工作正常,但是当我们运行它作为一种服务,它在这行代码中的错误进行测试:Windows服务中的HTTP请求问题

var httpWebRequest = (HttpWebRequest)WebRequest.Create(Uri); 

的错误信息是:

"Configuration system failed to initialize" 

我们认为这个错误是由于Windows服务运行时没有权限发出HTTP请求的用户帐户造成的,我们尝试在本地管理员帐户下运行它,但无济于事。这不是提供用户名和密码的问题,因为当我们将代码作为控制台应用程序运行时,上面的代码行执行得很好。

任何建议,不胜感激!非常感谢。

回答

0

这不太可能是一个安全问题。

来看通过帖子像这样的:

http://blogs.msdn.com/jongallant/archive/2008/03/02/configuration-system-failed-to-initialize-one-possible-solution.aspx它似乎来自一个配置文件问题。我猜“Uri”是通过查看配置文件初始化的一些属性。

这里的问题可能来自不符合要求的配置文件,也可能来自服务从某个奇怪的地方加载配置文件(因为它作为服务运行)。你可能想从sysinternals看procmon,看看你的服务在启动时加载了什么。

+0

感谢Yann,但Uri是一个硬编码的字符串,它不会从任何配置文件读取,因此这里没有配置文件问题。 – FreeFalling 2009-10-28 11:33:13

+0

你能提供异常的完整堆栈跟踪吗? – 2009-10-28 12:31:02

+0

System.Configuration.ClientConfigurationSystem.EnsureInit(字符串configKey) 在System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(字符串sectionName) 在System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(字符串sectionName) 在系统。 Configuration.ConfigurationManager.GetSection(字符串sectionName) 在System.Configuration.PrivilegedConfigurationManager.GetSection(字符串sectionName) 在System.Diagnostics.DiagnosticsConfiguration.GetConfigSection() – FreeFalling 2009-10-28 14:48:18

0

您是否有用户范围的设置?没有为Windows服务加载任何用户配置文件(也就是说,直到您自己加载一个用户配置文件),因此用户范围设置将会丢失。

+0

已解决问题。在节点中的machine.config文件出现问题,有些设置配置错误。从另一台PC获得另一台machine.config文件,现在工作正常。感谢那些试图提供帮助的人。 – FreeFalling 2009-10-29 14:26:31