【发布时间】:2012-02-02 00:28:18
【问题描述】:
我在 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 的相关部分如下所示(我不得不更改服务器的名称,抱歉):
<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>
非常感谢。
【问题讨论】:
-
服务以哪个用户帐户(查看服务的登录选项卡)运行?
-
嗨,它正在作为本地系统帐户运行。
-
您能否发布更多详细信息,也许是一些连接代码和异常信息?
-
您可以在您的 PC 上安装 Fiddler。它可能会提供更详细的错误信息。 fiddler2.com/fiddler2
-
您说它在您调试时工作 - 是托管在 IIS 中的 Web 服务还是 Web 开发服务器(Web 服务可能在奇怪的端口上运行,例如 8827)。如果是这样,你是不是在启动windows服务之前没有运行web服务?
标签: c# .net windows-services