C# 在调试器中运行的应用程序在中连接到webservice,但在作为windows服务运行时不连接

C# 在调试器中运行的应用程序在中连接到webservice,但在作为windows服务运行时不连接,c#,.net,windows-services,C#,.net,Windows Services,我已经在C#中创建了一个应用程序,作为Windows服务运行。这个很好用 我最近对其进行了修改,使其连接到Web服务。在Studio中运行时,此新代码工作正常,并连接到Web服务。但是,当我将程序作为Windows服务(在同一台计算机上)运行时,程序会超时,因为它无法连接到Web服务(出现异常-无法连接到远程服务器) 有人能想到为什么会发生这种情况吗 作为服务运行时出现的异常是: System.Net.WebException was unhandled Message="Unable to c

我已经在C#中创建了一个应用程序,作为Windows服务运行。这个很好用

我最近对其进行了修改,使其连接到Web服务。在Studio中运行时,此新代码工作正常,并连接到Web服务。但是,当我将程序作为Windows服务(在同一台计算机上)运行时,程序会超时,因为它无法连接到Web服务(出现异常-无法连接到远程服务器)

有人能想到为什么会发生这种情况吗

作为服务运行时出现的异常是:

System.Net.WebException was unhandled
Message="Unable to connect to the remote server"
Source="System"
StackTrace:
   at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
   at System.Net.HttpWebRequest.GetRequestStream()
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,          Object[] parameters)
   at DataExtractionService.uk.co.myserver.Service1.SendEmail(String Message, String Subject, String FromAddress, String[] ToAddress, String[] AttachmentNames, Object[] AttachmentData) in C:\Documents and Settings\administrator.MLR\My Documents\Visual Studio 2005\Projects\DataExtractionService\DataExtractionService\Web References\uk.co.myserver\Reference.cs:line 111
   at DataExtractionService.APDataExtractor.EmailReport(String message, String subject) in C:\Documents and Settings\administrator.MLR\My Documents\Visual Studio 2005\Projects\DataExtractionService\DataExtractionService\APDataExtractor.cs:line 610
   at DataExtractionService.APDataExtractor.RunDataExtraction() in C:\Documents and Settings\administrator.MLR\My Documents\Visual Studio 2005\Projects\DataExtractionService\DataExtractionService\APDataExtractor.cs:line 63
   at DataExtractionService.DataExtractionService.HandleClientComm(Object client) in C:\Documents and Settings\administrator.MLR\My Documents\Visual Studio 2005\Projects\DataExtractionService\DataExtractionService\DataExtractionService.cs:line 96
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart(Object obj)
Web服务只是以正常方式添加到“Web引用”下的项目中。Web服务在Studio中正常工作

exe.config的相关部分如下所示(对不起,我不得不更改服务器的名称):


https://myserver.co.uk/premieremailservice/Service1.asmx

非常感谢。

web服务在哪里运行?它需要什么类型的身份验证(如果有)?如果您的Windows服务在本地帐户(如系统或网络服务)下运行,则它可能没有连接到远程对象所需的权限

如果是这种情况,则需要在域帐户下执行windows服务,并授予该帐户与web服务对话的权限,或者完全删除身份验证


当您在Visual Studio中执行代码时,您是在自己的凭据上下文中运行的,我认为这些凭据足以访问web服务。

web服务在哪里运行?它需要什么类型的身份验证(如果有)?如果您的Windows服务在本地帐户(如系统或网络服务)下运行,则它可能没有连接到远程对象所需的权限

如果是这种情况,则需要在域帐户下执行windows服务,并授予该帐户与web服务对话的权限,或者完全删除身份验证



当您在Visual Studio中执行代码时,您是在您自己的凭据的上下文中运行的,我认为这些凭据足以访问web服务。

服务运行的用户帐户是什么(查看服务的“登录”选项卡)?您好,它运行的是本地系统帐户。您可以发布更多详细信息,可能是一些连接代码,以及异常信息?您可以在PC上安装Fiddler。它可能会提供更详细的错误信息。您说它在调试时工作——web服务托管在IIS或web开发服务器中(web服务可能运行在一个奇怪的端口上,例如8827)。如果是这样的话,在启动windows服务之前您是否没有运行web服务?该服务以什么用户帐户(查看服务的“登录”选项卡)运行?您好,它以本地系统帐户运行。您能否发布更多详细信息,可能是一些连接代码,以及异常信息?您可以在PC上安装Fiddler。它可能会提供更详细的错误信息。您说它在调试时工作——web服务托管在IIS或web开发服务器中(web服务可能运行在一个奇怪的端口上,例如8827)。如果是这样的话,在启动windows服务之前您是否没有运行web服务?这种想法的唯一问题是,通常如果是身份验证错误,您将得到HTTP 403-禁止,而不是“无法连接”错误。在系统下运行很可能是问题所在。网络服务应该允许出站网络连接。@CodingGorilla对于TCP传输上的连接也是这样吗?我在堆栈跟踪中看到了
HttpWebRequest
,但我不确定这是否一定意味着传输机制。大家好,非常感谢大家的建议。通过将服务帐户从“本地系统”切换到域管理员帐户,我最终成功了。@kprobst否对于纯TCP传输连接来说,这是不正确的,但web服务通常不使用纯TCP(因此称为“web服务”)基于堆栈跟踪和包含的
HttpWebRequest
类,我认为可以安全地说这确实是一个HTTP连接。这种想法的唯一问题是,如果是身份验证错误,通常会得到HTTP 403-禁止,而不是“无法连接”错误。在系统下运行可能是问题所在。网络服务应该允许出站网络连接。@CodingGorilla对于TCP传输上的连接也是这样吗?我在堆栈跟踪中看到了
HttpWebRequest
,但我不确定这是否一定意味着传输机制。大家好,非常感谢大家的建议。通过将服务帐户从“本地系统”切换到域管理员帐户,我最终成功了。@kprobst否对于纯TCP传输连接来说,这是不正确的,但web服务通常不使用纯TCP(因此称为“web服务”)基于堆栈跟踪和包含的
HttpWebRequest
类,我认为可以肯定地说这确实是一个HTTP连接。
<applicationSettings>
<DataExtractionService.Properties.Settings>
  <setting name="DataExtractionService_uk_co_myserver_Service1"
    serializeAs="String">
    <value>https://myserver.co.uk/premieremailservice/Service1.asmx</value>
  </setting>
</DataExtractionService.Properties.Settings>
 </applicationSettings>